码迷,mamicode.com
首页 > 数据库 > 详细

MySQL完整性语言

时间:2016-11-14 07:44:48      阅读:1436      评论:0      收藏:0      [点我收藏+]

标签:error   实验   表示   完整性约束   ges   多个   efault   unique   使用   

实验3:完整性语言

完整性语言实验包含3个实验项目,其中2个必修项目,1个选修项目。该实验的各个实验项目均为验证型实验项目。本次实验我选择的是实验3.1和实验3.3。

实验3.1 实体完整性实验

1)实验目的

掌握实体完整性的定义和维护方法。

2)实验内容和要求

定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语句:创建表时定义实体完整性、创建表后定义实体完整性。设计SQL语句验证完整性约束是否起作用。

3)实验重点和难点

实验重点:创建表时定义实体完整性。

实验难点:有多个候选码时实体完整性的定义。

1)        创建表时定义实体完整性(列级实体完整性),以创建department,dept_name为主码,定义department的实体完整性,蓝色那行定义了dept_name同时声明其为主码。

技术分享

2)        创建表时定义实体完整性(表级实体完整性),同样以创建department,dept_name为主码,定义department的实体完整性,蓝色那行在表级层次上给出了实体完整性。

 技术分享

3)        创建表后定义实体完整性,以department为例,先创建department,不声明主码,之后在蓝色那两行在创建表后定义了department中的dept_name属性为主码。

 技术分享

4)        定义实体完整性(主码由多个属性组成),以创建classroom表为例

 技术分享

5)        有多个候选码时定义实体完整性,以创建instructor表为例,其中name,salary,dept_name和ID均为候选码,选择ID作为主码,name限制为非空,salary检查工资是否超过29000,dept_name外键引用department的主码。

 技术分享

6)        删除实体完整性,删除instructor的主码

 技术分享

删除前:

 技术分享

删除后:

 技术分享

可明显看出主码已经删除。

7)        增加两条主码相同的记录,验证实体完整性是否起作用,以department为例,插入两条主码相同的记录可以看到会违反实体完整性约束。

 技术分享

技术分享

 

实验3.3 用户自定义完整性实验

1)实验目的

掌握用户自定义完整性的定义和维护方法。

2)实验内容和要求

针对具体应用语义,选择NULL/NOT NULL、DEFAULT,UNIQUE、CHECK等,定义属性上的约束条件。

3)实验重点和难点

实验重点:NULL/NOT NULL, DEFAULT。

实验难点:CHECK。

1)      定义属性NULL/NOT NULL约束

定义student表上的ID和name的NOT NULL属性。

 技术分享

2)      定义属性DEFAULT约束

定义student表中的tot_cred学分缺省属性值为0,表示学生初始学分为0

 技术分享

3)      定义属性UNIQUE约束

定义nation表中name属性必须唯一的完整性约束,表示国家名字不能一样。

 技术分享

4)      使用CHECK

使用CHECK定义instructor表中salary应该满足的约束。

 技术分享

5)      插入instructor的一条记录验证是否违反NOT NULL约束

 技术分享

执行此语句会报错:

21:47:18  insert into instructor  values(‘66666‘,null,‘NEW_Department‘,88888)

Error Code: 1048. Column ‘name‘ cannot be null

 技术分享

故可以看到完整性约束只有在被满足时才可以进行的操作才能被允许。

MySQL完整性语言

标签:error   实验   表示   完整性约束   ges   多个   efault   unique   使用   

原文地址:http://www.cnblogs.com/fengxw/p/6060519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!