mysql完整性语言_MySQL完整性语言

这篇博客详细介绍了MySQL中的完整性语言,包括实体完整性和用户自定义完整性。通过实验3.1和实验3.3,作者展示了如何定义和维护实体完整性,如创建表时和表后定义主码,以及处理多个候选码的情况。此外,还探讨了用户自定义完整性,如NULL/NOT NULL、DEFAULT、UNIQUE和CHECK约束,并通过示例验证了这些约束的效用。
摘要由CSDN通过智能技术生成

实验3:完整性语言

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

实验3.1实体完整性实验

(1)实验目的

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

(2)实验内容和要求

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

(3)实验重点和难点

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

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

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

bc8fe36a307dc3a345f9f94c3f4e921a.png

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

f39c98960cda8b838193bf4bf8ab09fc.png

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

4069359351a6e7017578712527f48cf2.png

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

5c36cd86f537d71f17871343c9fd41f6.png

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

b3a258555842381d802613ae6f99978b.png

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

642199f606116e2a2ffa26e0c0e01f07.png

删除前:

f5996f98a732511a91817145ea35c0e4.png

删除后:

14b0e6213cab90f24618c885334d7a20.png

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

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

b789f63212edf178b8530939430bbb1b.png

dd9ccccf317526bd88769318f592dc3c.png

实验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属性。

06c1f7f2533692c0ff0db50f6640c04f.png

2)      定义属性DEFAULT约束

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

778cc64109fb47405ad81e46cda3e43c.png

3)      定义属性UNIQUE约束

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

31f2011d819a456e0b68d997385c0ffb.png

4)      使用CHECK

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

8c7bb9db08ae1e3be9e1cf83a5b82924.png

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

94a84350a51c4b172d22eeff6fc18409.png

执行此语句会报错:

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

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

d5163e6d1b31b18e6dca6df608e1fa0e.png

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值