实验内容

(1)创建一个名为“Test_Integrity_姓名首字母缩写”的数据库。
(2)用命令方式在数据库中创建student表,course表和sc表,注意其中的约束按如下方式进行定义:ssex字段定义为表级约束,grade字段定义为列级约束,并为其定义一个约束名,其它的约束自己决定定义方式。
表结构如下:

MySQL创建一个名为school的数据库 创建一个名为student的数据库_字段


创建Student表

MySQL创建一个名为school的数据库 创建一个名为student的数据库_数据库_02


创建课程表

MySQL创建一个名为school的数据库 创建一个名为student的数据库_字段_03


创建选修表

MySQL创建一个名为school的数据库 创建一个名为student的数据库_插入数据_04


(3)向student表插入姓名列为“李晨”,其它列为空的学生记录,查看是否能够插入成功,若不能请分析原因。

MySQL创建一个名为school的数据库 创建一个名为student的数据库_字段_05


(4)向student表分别插入学号相同的两个学生记录,姓名任意(不重名),若不能插入成功,请分析原因。

先添加第一个学生


MySQL创建一个名为school的数据库 创建一个名为student的数据库_字段_06


插入第二个学生


MySQL创建一个名为school的数据库 创建一个名为student的数据库_数据库_07


违反了主码约束,所以不能插入

(5)向student表分别插入学号不同,姓名相同的两个学生信息时,查看发生的情况。

插入张三数据

MySQL创建一个名为school的数据库 创建一个名为student的数据库_插入数据_08

插入姓名相同,学号不同的学生数据

MySQL创建一个名为school的数据库 创建一个名为student的数据库_插入数据_09


插入数据时,违反了姓名的unique key 约束(6)向student表插入信息(“01”,“刘生”,“未知”,20,“IS”),查看是否能够插入成功,若不能请分析原因。

MySQL创建一个名为school的数据库 创建一个名为student的数据库_插入数据_10

插入数据时,违反了check限制的性别只能填入‘男’或‘女’

(7)使用Alter Table语句修改表student,增加对sage字段的check约束,使得列的值“不小于12”,输入学号为01,姓名为“刘生”的信息,当插入该学生的sage列分别为11,12时查看发生什么情况,并分析原因。

增加对sage的check约束

MySQL创建一个名为school的数据库 创建一个名为student的数据库_插入数据_11

年龄为11时无法插入,违反check约束

MySQL创建一个名为school的数据库 创建一个名为student的数据库_数据库_12

当年龄为12时不违反sage的check约束则可以插入数据

MySQL创建一个名为school的数据库 创建一个名为student的数据库_插入数据_13

(8)修改sc表中对于grade列的约束,将其改为grade在0到150之间。

修改约束先删除约束条件间


MySQL创建一个名为school的数据库 创建一个名为student的数据库_数据库_14

添加新约束grade在0到150之间

MySQL创建一个名为school的数据库 创建一个名为student的数据库_字段_15


(9)向course表插入元组(“01”,“数据库”,“05”,3)时,查看是否能够正常插入,如不能请分析原因。

MySQL创建一个名为school的数据库 创建一个名为student的数据库_字段_16

Sc表中的cno列有外码约束,参照列是course中cpno列,但是course表中还未曾有数据,所以插入数据不成功