收藏 分享(赏)

SQL-04数据完整性.doc

上传人:hwpkd79526 文档编号:8097903 上传时间:2019-06-08 格式:DOC 页数:16 大小:1.05MB
下载 相关 举报
SQL-04数据完整性.doc_第1页
第1页 / 共16页
SQL-04数据完整性.doc_第2页
第2页 / 共16页
SQL-04数据完整性.doc_第3页
第3页 / 共16页
SQL-04数据完整性.doc_第4页
第4页 / 共16页
SQL-04数据完整性.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、练习 4 约束、默认和规则41 上机目的1、练习使用企业管理器和 T-SQL 命令在查询分析器中创建表,管理表,熟悉并逐步掌握其中的步骤和对应语句。2、在企业管理器和查询分析器中练习约束、规则、默认的设置,通过练习逐步掌握约束的种类,作用和创建方法3、了解数据库关系图的作用,掌握数据库关系图的建立方法。42 上机练习预备知识点421 数据完整性1、数据完整性是指数据库中数据的正确性和一致性,是衡量数据库质量的一个重要标准。2、数据完整性包括:实体完整性、区域完整性、参照完整性、自定义完整性。实体完整性:确保数据库中所有实体的唯一性,也就是不应有完全相同的数据记录。实现方法:设定主键、设定唯一键

2、、设定唯一索引、设置标识区域完整性:要求数据表中的数据位于某一个特定的允许范围内。实现方法:设定默认值、设定核查约束、设定外键约束、设定规则参照完整性:用来维护相关数据表之间数据一致性的手段,避免因一个数据表的记录改变而造成另一个数据表内的数据变成无效的值。实现方法:设定外键约束、核查约束、触发器和存储过程用户自定义完整性:由用户根据实际应用中的需要自行定义。实现方法:规则、触发器、存储过程等。422 约束1、实现数据完整性最重要的方法,主要目的是限制输入到表中的数值的范围。字段级约束:是数据表中字段定义的一个部分,只能应用于数据表中的一个字段。如:为性别设置核查约束,只能输入“男”或者“女”

3、 ,不能输入其他内容。数据表级约束:独立于数据表的字段定义之外,它可以应用于数据表中的多个字段。如将表中的几个字段组合设置为主键。2、约束的种类: 主键(PRIMARY KEY)约束唯一标识表中的每一行的列或者列的组合,可以强制表的实体完整性。主键不允许为空。 外键(FOREIGN KEY)约束若列或者列的组合不是本表的关键字,而是另一个表的关键字,则称这些列或者列的组合是外键。一般表与表之间通过主键和外键进行连接,通过它可以强制表与表之间实现参照完整性。外键约束要求列中的每个值在被引用表对应的被引用列中都存在。唯一(UNIQUE)约束用于确保非主键字段中数据的唯一性。 核查(CHECK)约束

4、用于限制输入到一列或多列的值的范围,从逻辑表达式判断数据的有效性。 默认(Default)约束向数据表中插入记录时,如果用户没有指定该列的值,而该列需要一个明确值的情况下,则插入默认约束定义的值。非空(Not null)约束该约束的列不允许使用空值。423 实现主键约束1、企业管理器中:在表设计视图中实现。如图 41 所示如果是多个字段设置主键的情况,安 Ctrl 键同时选中几个字段,设置主键。图 41 设置主键2、定义的 T-SQL 语句:CONSTRAINT constraint_name PRIMARY KEY (字段名,n)CONSTRAINT:约束constraint_name:约束

5、名称3、创建表时设置主键单个字段设置主键(字段级约束)例 1 项目编号 int CONSTRAINT PK_pno PRIMARY KEY 或者 项目编号 int PRIMARY KEY多个字段设置主键(表级约束)例 2 项目编号 int,项目名称 char(10),CONSTRAINT PK_pno_pname PRIMARY KEY(项目编号,项目名称)注:以上两个例子,只是创建表语句的一部分,不是全部。4、修改表时添加主键ALTER TABLE table_nameADD CONSTRAINT constraint_name PRIMARY KEY (字段名,n)5、修改表时删除主键AL

6、TER TABLE table_nameDROP CONSTRAINT constraint_name注:所有删除约束的 T-SQL 语句相同,后面不再赘述。选中设置字段后,点右键选择“设置主键”或者工具栏上的图标。撤销的方法也是一样的。设置主键的字段设置主键的字段6、设置主键的注意点修改表上已经存在的主键时,只能先删除原有主键再重新建立一个新的主键约束。当主键被别的表引用时,不允许删除主键约束,除非首先将引用主键的外键删除。区分字段级主键约束与表级主键约束。使用相关语句删除主键约束时,会用到约束名称。*7、可以使用 sp_pkeys table_name 查看定义好的主键约束。424 实现唯

7、一约束1、企业管理器中:打开表设计视图,选择“属性”按钮,如图 42 所示在索引/键选项页中新建唯一约束。图 42 在表设计视图属性对话框设置唯一约束2、定义的 T-SQL 语句:CONSTRAINT constrain_name UNIQUE (字段名,n) 参数说明:UNIQUE:唯一3、创建表时设置唯一约束单个字段设置唯一约束(字段级约束)例 3 部门名称 char(18) null CONSTRAINT UN_dname UNIQUE或者 部门名称 char(18) null UNIQUE多个字段设置唯一约束(表级约束)例 4 部门名称 char(10) , 部门负责人 char(10

8、) ,CONSTRAINT UN_dname_dm UNIQUE (部门名称,部门负责人 )注:以上两个例子,只是创建表语句的一部分,不是全部。4、修改表时添加唯一约束所用的语句和添加主键约束相似,只是关键字的不同ALTER TABLE table_name创建唯一约束新建唯一约束删除唯一约束ADD CONSTRAINT constraint_name UNIQUE (字段名,n)5、唯一约束和主键约束的区别:UNIQUE 约束用于非主键的一列或列组合;一个表可以定义多个 UNIQUE 约束,而只能定义一个 PRIMAYR KEY 约束;UNIQUE 约束可以用于允许空值的列,而 PRIMAY

9、R KEY 约束则不能用于允许空值的列。425 实现外键约束1、企业管理器中:打开表设计视图,选择“属性”按钮,打开“关系”选项页,如图43 所示图 43 在表设计视图属性对话框设置外键约束2、定义的 T-SQL 语句:CONSTRAINT constrain_name FOREIGN KEY (字段名 ,.n) 从表的列名REFERENCES ref_table (ref_column.n) 主表名和主表中对应的列名 ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION参数说明: ON DELETE CASCADE|NO ACTION

10、 :如果指定 CASCADE,执行级联删除相关记录;如果指定 NO ACTION,则在删除父表中的被引用到的记录时,SQL Server 将返回一个错误操作信息并拒绝删除操作。 ON UPDATE CASCADE|NO ACTION:如果指定 CASCADE,执行级联更新相关记录;如果指定 NO ACTION,则在更新父表中的被引用到的记录时,SQL Server 将返回一个错误操作信息并拒绝更新操作。 NOT FOR PLICATION:数据通过复制添加到数据表时,不执行外键约束。3、创建表时设置外键约束例 5 若已有员工表(员工编号,员工姓名)其中“员工编号”是主键,接下来定义项目表(项目

11、编号,项目负责人) ,那么“项目负责人”就可以定义一个外键约束,它与“员工表”新建外键约束删除外键约束设置外键的表和字段相连接的表和连接字段主键的“员工编号”进行关联。项目负责人 char(6) null CONSTRAINT FK_dno FOREIGN KEY REFERENCES 员工表 (员工编号 )或者 项目负责人 char(6) null FOREIGN KEY REFERENCES 员工表 (员工编号)4、修改表时添加外键约束ALTER TABLE 项目表ADD CONSTRAINT FK_pname FOREIGN KEY(项目负责人)REFERENCES 员工表 (员工编号

12、)5、说明级联更新相关记录:当主键表中的主键值被修改后,系统将自动强制的修改外键表中所有外键值与主键表中被修改主键值相同的行,以保证表间的参照完整性。级联删除相关记录:当主键表中的主键值所在行被删除后,系统将自动强制的删除外键表中所有外键值与主键表中被删除主键值相同的行,以保证表间的参照完整性。一个表可以有多个外键约束。外键约束只能引用被引用表中为主键(PRIMARY KEY)或者唯一约束(UNIQUE)的列或者被引用表中在唯一索引(UNIQUE INDEX)内引用的列。主键和外键的数据类型和长度必须一致。定义表间参照关系:先定义主表的主键,再对从表定义外键约束。426 实现核查约束1、企业管

13、理器中:打开表设计视图,选择“属性”按钮,打开“CHECK 约束”选项页,如图 44 所示图 44 在表设计视图属性对话框设置 CHECK 约束2、定义的 T-SQL 语句:CONSTRAINT constraint_name CHECK (logical_expression)参数说明:logical_expression:逻辑表达式返回 TRUE 或 FALSE3、创建表时设置核查约束例 6 月薪 smallmaney null CONSTRAINT CK_esa CHECK (月薪=1000 AND 月薪=1000 AND 月薪=2000)核查约束的逻辑表达式4、修改表时添加核查约束例

14、7 ALTER TABLE 员工表ADD CONSTRAINT CK_no CHECK (员工编号 like AZ090909)将员工编号限定为 4 位,其中第一位的取值范围是AZ或者az,其他位为09,输入其他符号被认为无效。5、注意 列可以有任意多个核查约束,并且约束条件中可以包含用 AND 和 OR 组合起来的多个逻辑表达式。约束条件必须取值为布尔表达式,并且不能引用其他表。使用 T-SQL 修改核查约束,必须先删除已有的核查约束,然后再重新定义。427 实现默认约束1、在企业管理器中,在表设计视图中实现。如图 45 所示图 45 在表设计视图设置默认约束2、创建表时设置默认约束例 7

15、性别 char(2) notnull DEFAULT 男 3、修改表时添加默认约束例 8 ALTER TABLE 员工表ADD CONSTRAINT Default_sex DEFAULT 男 FOR 性别428 默认对象1、默认是一种数据库对象,可以绑定到数据表的一列或多列上,产生与 DEFAULT 约束相同的作用。2、默认和 DEFAULT 约束不同点:DEFAULT 约束在创建表或修改表时定义,嵌入到被定义的表的结构中,删除表时DEFAULT 约束也被删除。默认对象作为一种单独存储的数据库对象,它独立于表之外,需要用特定的语句进行定义和删除。删除表时不能删除默认对象。设置默认值即默认约束

16、3、在企业管理器中创建和应用默认对象创建默认:在数据库所在的树型目录中选中“默认值” ,点右键选择新建默认值,输入默认对象的名称和默认值,确定。如图 46 所示图 46 创建默认对话框应用默认:选中已创建的默认对象,点右键选择属性,如图 47 所示。图 47 应用默认对话框点击帮定列,出现如图 48 所示对话框,选择绑定的表和对应的列。可选多个表和多个列。默认名称变灰色图 48 绑定默认到列的对话框4、在企业管理器中删除默认对象要删除已经应用的默认对象,必须先解除所绑定的列,再将默认对象删除。解除绑定选中默认对象,打开图 48 所示的对话框,删除已帮定列。删除默认解除绑定列后,选中默认对象,点

17、右键删除即可。5、用 T-SQL 语句创建、绑定、删除默认对象创建默认:CREATE DEFAULT default_name AS constant_expression参数说明:default_name:默认对象名称;constant_expression:默认对象的表达式 绑定列:sp_bindefault defname=default_name,objname=object_name参数说明:defname=default_name:默认名称;objname=object_name:绑定默认值列的名称。格式为:“表名.列名”解除帮定列:sp_unbindefault objname=

18、object_name 删除默认:DROP DEFAULT default_namen 429 设置规则1、规则是一种数据对象,作用类似于 CHECK 约束,在插入数据行时,指定数据值的范围。2、规则与 CHECK 约束的区别:CHECK 约束是在创建表或修改表时定义,嵌入被定义的表结构,在删除表时同时选择默认所应用的表选择默认所应用的列CHECK 约束也被删除;一个列可以有多个 CHECK 约束。规则是独立存储的数据对象,需要用特定的语句定义和删除,删除表时不能删除规则。一个列只能有一个规则,但一个规则可应用于多个列。3、在企业管理器中创建和应用规则创建规则:在数据库所在的树型目录中选中“规

19、则” ,点右键选择新建规则,输入规则的名称和逻辑表达式,确定。如图 49 所示图 49 创建规则对话框应用规则:选中已创建的规则,点右键选择属性,如图 410 所示。图 410 应用规则对话框规则名称变灰色点击帮定列,出现如图 411 所示对话框,选择绑定的表和对应的列。可选多个表和多个列。图 411 绑定规则到列的对话框4、在企业管理器中删除规则要删除已经应用的规则,必须先解除所绑定的列,再将规则删除。解除绑定选中规则,打开图 411 所示的对话框,删除已帮定列。删除默认解除绑定列后,选中规则,点右键删除即可。5、用 T-SQL 语句创建、绑定、删除规则创建规则:CREATE RULE ru

20、le_name AS condition_expression参数说明:rule_name:规则名称;constant_expression:规则条件表达式。可以是内置函数、算术表达式、数学表达式或者组合,表达式中必须包含一个变量,变量前面都要有符号。绑定列:sp_bindrule rulename=rule_name,objname=object_name参数说明:defname=default_name:默认名称;objname=object_name:绑定默认值列的名称。格式为:“表名.列名”解除绑定列:sp_unbindrule objname=object_name 删除默认:DRO

21、P RULE rule_name n 4210 创建关系图选择默认所应用的表选择默认所应用的列关系是表之间的连接,用一个表的外键连接一个表的主键。如果强制表之间的引用完整性,则关系线在数据库关系图中以一根实线表示;如果 INSERT 和 UPDATE 不强制引用完整性,则以虚线表示。关系线的终结点显示一个主键符号以表示主键表,无穷符号表示外键表。创建关系图的方法:在企业管理器中利用向导创建关系图。在企业管理器左边的目录树结构中打开要创建关系图的数据库的节点,选中“关系” ,点右键选择“新建数据库关系图” ,打开“创建数据库关系图向导”窗口,如图 412 所示图 412 “创建数据库关系图向导”

22、窗口单击【下一步】 ,打开“选择要添加的表”窗口,如图 413 所示。将要建立关系的表从左边的列表框选到右边的列表框。图 413 “选择要添加的表”窗口单击【下一步】 ,打开,如图 414 所示图 414 “正在完成数据库关系图向导”对话框点击【完成】出现刚才创建的关系图,如图 415 所示如图 415 创建好的关系图说明: 已经建立好的连接也可以进行修改,选中“关系线”点右键在出现的对话框中选择“从数据库中删除关系” ,然后在重新建立关系。 如果创建表的时候没有设置外键,表与表之间的关系线就不能自动创建,需要手动连接。 也可以通过建立关系图的这个方法来设置外键约束。选中“关系线”点右键在出现

23、的对话框中选择“属性” ,出现设置外键约束的对话框如图 416 所示,进行连接字段调整。 关系图可以表现多张表之间的关系以及它们之间的连接字段。表示表与表之间关系的关系线图 416 设置外键约束的对话框 最后给关系图命名并保存。43 上机内容431 在企业管理器中管理数据表实现数据完整性1、将 Company 数据库文件附加到 SQL SERVER 服务器上。 (在企业管理器中操作)2、打开上次练习创建的表:“员工情况表” ,删除所有的数据即清空数据表。3、打开该表的设计视图,为该表设置主键(编号) 。4、在“性别”列上设置核查约束只能输入“男”或者“女” 。5、增加一个字段“身份证号” ,要

24、求实现该字段最多只能输入 18 个字符并设置唯一约束。6、再创建一张表“仓库借物表” ,包含的字段如下,数据类型根据需要自定义。仓库借物表(借物编号,管理员编号,所借物品名称,借物数量,借物时间,规还时间)7、为“仓库借物表”设置主键。主键为:8、为“仓库借物表”设置外键约束实现数据参照完整性。(提示:设置外键的字段为“员工情况表”和“仓库借物表”的连接字段)9、为字段组合“借物编号,管理员编号,所借物品名称”设置唯一约束10、创建默认对象 DEF_SALARY,值为 2500。将该默认对象绑定到“员工情况表”的“工资”字段。11、创建规则 RU_NO,实现的功能是可限定编号为 4 位,其中第

25、一位的取值范围是AZ或者az ,其他位为 09。将该规则绑定到“员工情况表(编号) ”和“仓库借物表(借物编号/管理员编号) ”的编号类字段。12、分别向两张表输入三条记录。 (注意记录输入的顺序,先操作主键表,再操作外键表。要实现数据完参照整性)432 在查询分析器中管理数据表实现数据完整性1、在 Company 数据库中,增加一张表:物品表。字段如下,数据类型根据需要自定义。物品表(物品编号,物品名称,类别,单价,计量单位,供应商)要求:设置主键 为“物品名称”设置唯一约束 为“类别”设置默认约束“其他”2、在“物品表”中增加一个字段“数量” ,并为其设置核查约束,使它的取值范围在0500

26、03、在“仓库借物表”增加外键约束 FK_OBJ 实现数据完整性。(提示:设置外键的字段为“物品表”和“仓库借物表”的连接字段)4、将 JXGL 数据库文件附加到 SQL SERVER 服务器上。5、创建默认对象 DE_sex,默认值为“男” 。将该默认对象绑定到 Students 表的 ssex 列。6、创建规则 RU_ credit,限定输入的值必须大于 0。将该规则绑定到 Course 表的 credit 列。7、删除第 5,6 题创建的默认对象和规则。 (提示:先解除绑定再删除对象)4.4 补充练习1、创建 SC 表,包含字段如下 SC(sno,cno,grade),创建表的过程中设置

27、主键。其中 sno学号,cno课程号,grade 成绩。数据类型根据需要自定义。提示:在设计字段的数据类型时应注意该表分别与 Students 表和 Course 表有关系,其中关联字段数据类型必须一致。2、是否有必要为该表的字段设置唯一约束,为什么?3、创建关系图 S_C_S 用来表示 Students 表、Course 表、SC 表三张表之间的关系。4、根据创建好的关系图,说明这三张表中有那几个字段设置了外键约束。45 上机结果在 D:新建一个文件夹,命名为“你的学号”“你的姓名” 。将上机过程中使用过的数据库文件和 T-SQL 命令全部保存在该文件夹中,命名任意。最后将所有内容压缩上传。

28、 (注意:移动数据库文件之前,要先从数据库服务器上分离数据库)将对应的语句记录在题目的空白处。46 课后练习Readers 表(rno,rname, idcard, spet,dept,bday )Lend_Return 表(rno,bookid,lenddate ,retuendate,fine)说明:在 Readers 表中 rno读者编号,rname读者姓名,idcard身份证号,spet专业,dept系别,bday出生日期在 Lend_Return 表中 rno读者编号,bookid图书编号,lenddate借书日期,retuendate还书日期,fine罚金1、 用 T-SQL 语句

29、创建 Readers 表(读者信息表)和 Lend_Return 表(借阅表) ,字段如上,数据类型自定义。同时为这两张表设置主键,为 Readers 表的“idcard ”(身份证号)设置唯一约束注意:区分字段级约束和表级约束2、修改 Readers 表增加一个字段 rsex(性别) ,为该字段设置 CHECK 约束,只能输入“男”或者“女” 。 注意逻辑表达式的格式3、修改 Readers 表,为“spet ”(专业)增加默认约束,默认值为“计算机应用”4、为 Lend_Return 表设置外键约束,将该表与 Readers 表联接起来,实现参照完整性。注意连接的表以及字段5、创建规则 RU_money,将它绑定到“Lend_Return 表”的“fine”(罚金) 字段,使得该字段不能取负值。6、创建默认对象 DEF_FINE,将它绑定到“Lend_Return 表”的“fine”( 罚金)字段,使得该字段默认值为 07、向两张表各输入一条记录。 注意输入记录的顺序8、删除规则 RU_money。9、删除默认对象 DEF_FINE。10、删除 Lend_Return 表中第 7 题添加的记录。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报