练习2 实现数据的完整性
(脚本保存为“练习2——学号+姓名.sql”,并将脚本上传到ftp)
一、创建名为mydb1的数据库
二、在mydb1数据库中按照下表所示.创建Student,teacher,test,test_score表
student 属性名 student_id name sex age 数据类型 int varchar char int 长度 20 2 可否为空 否 否 否 可 说明 默认值“男”
teacher
属性名 teacher_id name sex age birthdate workdate 数据类型 int varchar char int datetime datetime 长度 20 2 可否为空 否 否 否 可 可 可 说明 主键
test 属性名 test_id test_name teacher_id 数据类型 int varchar int 长度 20 可否为空 否 可 否 说明 主键
test_score
属性名 student_id test_id score 数据类型 int int int 长度 可否为空 否 否 可 说明
三、添加删除约束
1. 将student表中的student_id设置为“主键”;
2. 在student表中添加专业列institute,最长是10个汉字,不允许为空,默认值为“计算机软件”;
3. 修改Student表中列sex上的默认值为‘女’;
4. 在teacher表中对age列添加约束,年龄在18-60之间; 5. 在teacher表中添加约束,工作时间必须大于生日;
6. 将test_score表中的student_id和test_id设置为“主键”; 7. 将test_score表中的score设置检查约束,成绩值在0-100之间; 8. 设置外键:test表中的teacher_id参照teacher表中的teacher_id;
9. 设置外键:test_score表中的student_id参照student表中的student_id,test_id参照test表中的test_id;
10. 执行下面的语句,验证以上操作:(说明:大家仔细查看表的信息,是否与图示一致)
sp_help student
sp_help teacher
sp_help test_score
11. 形成这4张表的关系图,如下所示:(说明:大家查看自己创建的关系图与图示是否一致)
12. 执行下面语句,得到如下结果:
insert student values(1,'白云','女',22,'电子科技大学计算机系'); insert student values(2,'黑土','男',21,'电子科技大学计算机软件系');
执行语句:select * from student 得到如下结果:
*13. 执行下面语句:(可以选做,查看帮助文档,实现禁用约束) insert teacher values(1,’Smith’,’男’,28,null,null)
insert test values(1,’数据库’,1) go
insert test_score values(1,1,120) go
如出现错误,请用禁用约束的方法将该记录插入。