从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
实体完整性也称为行完整性,是指表中的每一行都必须能够唯一标识,且不存在重复的数据行。在SQL Server 2012中,实体完整性可以通过主键约束和唯一性约束实现。
1.主键约束
在表结构设计器中可以设置主键。某列(例如StudentⅠD列、CourseⅠD列、AuthorⅠD列)被设置为主键,该列取值就不能为空,也不能重复。当表中主键列值违反主键约束,即出现重复值或有空值存在,系统自动提示错误信息。例如,当在Course表中输入一门新课,如果Coursed号与其他数据重复,违反了主键约束,系统将提示出错,如图8-1所示。主键约束是表对象,在表的“键”中可以查看,如图8-2所示。
图8—1 违反主键约束
图8—2 查看主键对象
如果主键设置需要修改或删除,可以在表结构设计器中修改或删除,也可以针对主键对象修改或删除,如图8-3所示。
图8—3 修改或删除主键对象
使用T-SQL语句也可以实现主键约束。在CREATE TABLE或ALTER TABLE语句中使用PRⅠMARY KEY子句,实现主键约束的创建、修改或删除。
CourseⅠD被设置为主键,需要PRⅠMARY KEY字句。PRⅠMARY KEY字句可以放在列名后面,也可以放在最后。
CourseⅠD和StudentⅠD被设置为主键(组合多列主键),PRⅠMARY KEY就不能放在列名后,只能放在最后。CONSTRAⅠNT字句用来命名主键。
当使用ⅠNSERT、UPDATE语句违反主键约束时,系统也会提示错误信息。如果Coursed列值与其他数据重复,违反了主键约束,系统将提示出错,如图8-4所示。
图8—4 T—SQL语句违反主键约束
2.唯一性约束
一个表只能有一个主键。但有的表中除了主键不能为空和不能有重复值存在之外,还有其他列也有同样的要求,例如Course表的CourseName列、School表的SchoolName列也不允许为空和不能有重复值存在。这时就可以设置唯一性来实现。
在表结构设计器中打开School表,右键点击,在弹出的快捷菜单中选择“索引/键”选项,如图8-5所示,进入“索引/键”对话框,如图8-6所示。在该对话框中,已经存在一个名为“PK School”的索引/键。这是在建表设置主键时,系统自动创建的主键约束。
图8—5 选择“索引/键”选项(www.chuimin.cn)
图8—6 “索引/键”对话框
设置唯一性约束,单击“索引/键”对话框的“添加”按钮,添加一个新的索引/键对象。用户可以对新建的索引/键选项设置。选择“类型”下拉列表框“唯一键”选项,再选择“列”选项,将列选择为“SchoolName(ASC)”,其中SchoolName是这个索引/键作用的列名,ASC为该列数据排序为升序,如图8-7所示。关闭并保存,即唯一性设置成功。如果选择“类型”下拉列表框“索引”选项,这是创建唯一性索引。还需要将“是唯一的”选项设置为“是”,约束效果相同,如图8-8所示。
图8—7 唯一性设置
图8—8 创建唯一性索引
唯一性约束是表对象,在表的“键”中可以查看,如图8-9所示。主键约束和唯一性约束都在表的“键”中以键对象的形式存在。它们不仅以名称区分,还以图标显示区分。“”掌图标(金黄色)表示主键对象,
”图标(蓝色)表示唯一性约束对象。
图8—9 查看唯一性约束对象
如果唯一性约束设置需要修改或删除,可以在表结构设计器中修改或删除,也可以针对键对象修改或删除,如图8-10所示。
图8—10 修改或删除唯一性约束对象
当用户在School表中输入一个新学院,如果SchoolName与其他数据重复,则违反了唯一性约束,系统将提示出错,如图8-11所示。
图8—11 违反唯一性约束
使用T-SQL语句也可以实现唯一性约束。在CREATETABLE或ALTER TABLE语句中,使用UNⅠQUE子句,实现唯一性约束的创建、修改或删除。当使用ⅠNSERT、UPDATE语句违反唯一性约束时,系统也会提示错误信息,如图8-12所示。
图8—12 系统提示错误信息
从约束效果看主键约束和唯一性约束,基本相同。两者不同的是,一个表只能有一个主键约束,但可以有多个唯一性约束。
有关数据库技术与应用教程的文章
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
如果要使用缺省参数创建一个学籍管理数据库StuData,可以使用如下命令:Create Database StuData如果希望为数据库或事务日志指定一个或者多个特定文件,增加一个On Primary子句,列出一个或者多个文件,并可为分配这个文件的空间指定一个可选值,其命令形式如下:Create Database StuDataOn Primary,;如果为了提高性能和可恢复性,则可以使用Log On子句来指定数据库的SQL Server事务日志将存储在一个与数据库对象不同的设备上,示例如下:Create Database StuDataOn Primary,Log On;GO......
2023-11-24
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2023-11-24
引用完整性也称为参照完整性约束,或关联完整性约束,或外部约束关系,或外部键约束。在SQL Server 2012中,引用完整性就是通过定义外键关系来实现的。图8—22选择“关系”选项图8—23“外键关系”对话框选择“表和列规范”选项,弹出“表和列”对话框。引用完整性约束在表的“键”中以键对象的形式存在,它以”图标(灰色)表示,如图8-27所示。......
2023-11-24
SQL的数据查询语句中包括SELECT,FROM,WHERE,GROUP BY和ORDER BY子句。SELECT语句具有数据查询、统计、分组和排序的功能,其语句表达能力非常强大。查询操作需要的数据源指基本表组,表间用“,”分割。当SELECT子句后的目标列中有统计函数,如果查询语句中有分组子句,则统计为分组统计,否则为对整个结果集统计。交查询操作,操作结果为取<查询1>和<查询2>共有的元组。......
2023-11-24
由于信息结构复杂,应用环境多样,在相当长的一段时期内数据库设计主要采用手工试凑法。人们经过探索提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法。工具在很大程度上依靠开发人员的经验来保证数据库模型能生成可行的设计方案和高性能的数据库。大多数的数据库设计方法都需要经历这三个步骤。根据所选择的设计方法按部就班地进行并最终获得一个实用的应用系统。......
2023-11-24
下面介绍的优化策略能提高查询的效率,但它们不一定是最优的策略,实际上“优化”一词并不是很确切,用“改进”或“改善”或许更恰当些。即使这样,使用预处理方法执行连接的时间一般仍大大减少。当查询视图时,定义视图的表达式就是公共子表达式的情况。......
2023-11-24
根据事务的设置、用途的不同,SQL Server 2012将事务分为多种类型。用户定义事务在实际应用中,大多数的事务处理采用了用户定义的事务来处理。ROLLBACK语句是取消语句,该语句将事务的操作全部取消,即表示事务操作失效。显式事务显式事务是指每个事务均以BEGⅠN TRANSACTⅠON语句显式开始,以COMMⅠT或ROLLBACK语句显式结束。......
2023-11-24
相关推荐