4.添加数据完整性约束
--在修改表时指定外键约束
--alter table 表名 add 外键约束
ON DELETE子句:为外键定义父表执行 DELETE(删除)语句时的参照动作。
ON UPDATE 子句:为外键定义父表执行 UPDATE(修改)语句时的参照动作。
(1)为学生表student添加外键约束,使其院系代码deptno字段的值必须是院
系表department中院系代码deptno字段已经存在的值,并且要求当修改院系表
department中的deptno字段值时,学生表student中的deptno字段的值也要随之变
化。
alter table student
add foreign key(deptno)
references department(deptno)
on delete set null
on update cascade;
(2)为教师表 teacher 指定外键约束,使其院系代码 deptno 字段的值必须是
院系表 department中院系代码 deptno 字段已经存在的值,并且要求当修改院系表
department 中的 deptno 字段的值时,教师表 teacher 中的 deptno 字段的值也要
随之变化。
alter table teacher
add foreign key(deptno)
references department(deptno)
on delete set null
on update cascade;
(3)为选修成绩表score指定外键约束,使其学号sno字段的值必须是学生表
student中学号sno字段已经存在的值,并且要求当删除或修改学生表student中的
学号 sno字段的值时,如果选修成绩表score中该学生有相关的记录,则不得删除或
修改。
alter table score
add foreign key(sno)
references student(sno)
on delete set null
on update cascade;
(4)为选修成绩表 score 指定外键约束,使其课程编号 cno 字段的值必须是
课程表 course 中课程编号 cno 字段已经存在的值,并且要求当删除课程表 course
中某个课程编号 cno 记录时,如 果选修成绩表 score 中该课程有相关记录,则同时
删除。
alter table score
add foreign key(cno)
references course(cno)
on delete set null
on update cascade;
(5)为讲授课程表 teaching 指定外键约束,使其教师工号 tno 字段的值必须
是教师表 teacher 中教师工号 tno 字段已经存在的值。
alter table teaching
add foreign key(tno)
references teacher(tno);
(6)为讲授安排表 teaching 指定外键约束,使其课程编号 cno 字段的值必须
是课程表 course 中课程编号 cno 字段已经存在的值。
alter table teaching
add foreign key(cno)
references course(cno);
----在修改数据表时指定默认值约束
ALTER TABLE 表名 MODIFY [ COLUMN ] 字段名称 数据类型 DEFAULT 默
认值;
(7)为院系表 department 指定默认值约束,即指定负责人 director 的默认
值为“院长”。
alter table deptment
modify director varchar(50) default '院长';
----在修改数据表时指定检查约束
ALTER TABLE 表名 ADD CHECK( 表达式 );
(8)为学生表 student 指定检查约束,即指定性别 sex 字段的值只能是“男”
或“女”。
alter table student add check(sex in('男','女'));