数据库第五章例题

实体完整性

实体完整性在CREATE TABLE中用PRIMARY KEY定义,就是定义码

例5.1 将Student表中的Sno属性定义为码

在列级定义:
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20));

也可以在行级定义
CREATE TABLE Student
(Sno CHAR(9),
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY(Sno));

例5.2 将SC表中的Sno,Cno属性组定义为码。

CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY(Sno,Cno));

这个跟5.1一样,因为要把两列都定义为码,只能在表级定义主码。
在这里插入图片描述

参照完整性

在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照了哪些表的主码。

例5.3 定义SC中的参照完整性。

CREATE TABLE SC
(Sno CHAR(9)NOT NULL,
Cno CHAR(4)NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno));

在表级定义的Sno,Cno为主码
Sno,Cno也是在表级定义的参照完整性。
在这里插入图片描述

例5.4 显示说明参照完整性的违约处理事例。

CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Student (Sno)
ON DELETE CASCADE
ON UPDATE CASCADE
FOREIGN KEY(Cno) REFERENCES Course (Cno)
ON DELETE NO ACTION
ON UPDATE CASCADE);

主要是针对被参照表的操作
当删除(或更新)Student表中的元组时,级联删除(或更新)SC表中的相应元组。
删除Course表中的元组,如果与SC表不一致,则拒绝删除。
更新Course表的Cno,SC表也跟着更新。
被参照表更新,参照表拒绝/更改/设为空值。

用户定义完整性

列值非空 NOT NULL
列值唯一 UNIQUE
检查列值是否满足一个条件 CHECK短语

例5.5 定义表时,说明一些属性不允许空值。

CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMAL
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值