完整性

1. 在前几次实验所使用的数据库中新建一个教师信息表,表名为Teacher,字段包括Tno(教师编号),Tname(姓名),Tsex(性别),Ttitle(职称),完整性包括:设定Tno为主键,Tname非空,Tsex的取值范围为“男”或“女”。

 create table Teacher

(Tno char(9)primary key,

Tname char(8)NOT NULL,

Tsex char(2)check(Tsex in('男','女')),

Ttitle char(8));

2. 用insert语句插入如下记录,观察实验结果:

   insert into Teacher values('2016001','王明','男','讲师')

   insert into Teacher values('2016001','王英','女','助教')

   

   insert into Teacher values('2016002','张方','a','讲师')

   

3. Teacher表增加一个约束,Ttitle属性的取值范围为('助教','讲师','副教授','教授'),并插入一条记录:

 insert into Teacher values('2016003','刘阳','男','研究员'),观察实验结果。

   完整性_第1张图片


 

4. 为学生表Student增加一个约束,Ssex的取值范围为“男”或“女”。

   完整性_第2张图片

5. 为选课表Sc增加一个约束,Grade的取值在0至100之间。

(提示,3,4,5是对表的结构增加约束定义,使用命令为:Alter table)

 完整性_第3张图片

6. 为选课表Sc增加参照完整性及违约处理,定义sno为外键,与student表中的sno关联,当删除、更新student中的元组时,级联删除、更新Sc表中的相应元组,命令为:

  alter table sc

   add foreign key(sno) references student(sno)

   on delete cascade

   on update cascade

使用SQL语句,将Student表中姓名为”王敏”的元组,学号更改为“201315123”,然后查看SC表中的元组是否也做了相应的更改。

7. 为选课表Sc增加参照完整性及违约处理,定义cno为外键,与course表中的cno关联,当删除、更新course中的元组时,级联删除、更新Sc表中的相应元组,并进行验证。

  完整性_第4张图片 

  修改之前的数据:

  

完整性_第5张图片

  

  

  修改之后的数据:

  完整性_第6张图片


  完整性_第7张图片

完整性_第8张图片

  

8. 建立一个触发器,当向sc表中添加数据时,如果添加的数据与student表中的数据不匹配(没有对应的学号),则将此数据删除。

  完整性_第9张图片

9. 创建一个修改触发器,当student表中的sno信息修改时,自动将SC表中的相应信息也修改。

(简单要求:修改仅为一条记录)

(注:8,9的操作使用create trigger命令,触发器创建成功后,自己使用insert语句,或者update语句进行验证,验证完毕,可以将触发器删除)

  完整性_第10张图片


 


完整性_第11张图片

 完整性_第12张图片

 

你可能感兴趣的:(数据库)