实验八 实现数据完整性

一.实验目的

(1)了解实现数据完整性的概念及实施数据完整性的重要性。
(2)掌握数据完整性的分类。
(3)掌握完整性约束的添加、删除方法。
(4)掌握默认值的创建、实施与删除方法。
(5)掌握规则的创建、实施与删除方法。
(6)掌握级联删除、级联修改方法。

二.实验内容

  1. 完整性约束的添加、删除
    (1)使用SQL Server Management Studio实施约束。
    a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。
    右击Birth列,选择CHECK约束
    在这里插入图片描述
    新建约束,在表达式处填入约束表达式:
    在这里插入图片描述

    b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。
    选择Sdept列,在"默认值或绑定"处填写默认值
    在这里插入图片描述

    c.为Student表的Sname字段添加唯一性约束。
    在设计窗口右击,选择"索引/键"
    在这里插入图片描述
    单击"添加"按钮,选择Sname列,在"是唯一的"栏中选择"是"
    在这里插入图片描述

    d.为SC表的Sno,Cno字段设置外键约束,约束名自己取,并允许级联删除与级联更新。若已存在外键约束,请先删除。
    在SC表的设计窗口右击,选择"关系"列
    在这里插入图片描述
    单击添加,在"表和列规范"选线后面单击按钮
    在这里插入图片描述
    选择关联的表
    在这里插入图片描述
    同样的操作关联Course表和SC表,如下图设置级联删除和级联更新
    在这里插入图片描述

    (2)使用Transact-SQL语句实施约束。
    a.为student表的Sno字段添加一个check约束,使学号满足如下条件:学号前四位为2011,学号后四位为数字字符。

    alter table Student
    add constraint CK_Sno check(Sno like '2011[0-9][0-9][0-9][0-9]')
    

    b.为student表中的Birth字段添加一个约束,规定生日应小于入学时间。

    alter table Student
    add constraint CK_Birth check(year(Birth)<year(Entrance_date));
    

    c.禁用(a)中实施的Check约束。

    alter table Student
    nocheck constraint CK_Sno;
    

    d.重新启用Check约束。

    alter table Student
    check constraint CK_Sno;
    

    e.删除(a)所设置的check约束。

    alter table Student
    drop constraint CK_Sno;
    

    f.将Student表中的Classno字段设置为允许空。

    alter table Student
    alter column Classno char(3) null;
    

    g.为SC表中的Sno,Cno添加外键约束,约束名自取;并允许级联删除与级联更新。若已存在外键约束,请先删除。

    alter table SC
    add constraint FK_Sno foreign key (Sno) references Student(Sno)
    on delete cascade
    on update cascade;
    
    alter table SC
    add constraint FK_Cno foreign key (Cno) references Course(Cnoo)
    on delete cascade
    on update cascade;
    

    h.为Course表中的Cname字段添加唯一性约束。

    alter table Course
    add unique(Cname);
    
  2. 默认值的实施
    (1)通过SQL Server Management Studio实现。
    a.为数据库Student_info创建一个默认的邮政编码,名称自取,值为:200093。

    b.将该默认值绑定到Student表中的Postcode列。
    在这里插入图片描述

    c.将Postcode列上的绑定解除,并删除该默认值。
    在这里插入图片描述

    (2)用Transact-SQL语句重做(1)中的(a)、(b)、(c)。
    a:

    create default df_Postcode as '200093';
    

    b:

    sp_bindefault df_Postcode,'Student.Postcode';
    

    c:

    sp_unbindefault 'Student.Postcode'
    drop default df_Postcode;
    
  3. 规则的实施
    (1)通过SQL Server Management Studio实现。
    a.为数据库Student_info创建一个关于性别的取值规则,规则名自取,要求字段的取值仅能为’男’或’女’。
    b.将该规则绑定到Student表的Sex字段上。
    c.解除Student表的sex列上的绑定,并删除该规则。
    (2)使用T-SQL重做(1)中的(a)、(b)、(c)。
    a:

    create rule rl_sex
    as @sex like '[男,女]';
    

    b:

    exec
    sp_bindrule rl_sex,'Student.Sex';
    

    c:

    sp_unbindrule 'Student.Sex';
    drop rule rl_sex;
    

版权声明:本文为Lilianach原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。