数据库作业13:SQL练习8 - CHECK / CONSTRAINT / TRIGGER / PROCEDURE/ FUNCTION

本文详细介绍了SQL中的完整性约束,包括实体完整性、参照完整性和用户定义的完整性,以及如何在CREATE TABLE和ALTER TABLE语句中定义和修改这些约束。此外,还讨论了触发器的概念,包括定义、触发事件、类型以及激活和删除触发器的过程。内容涵盖了完整性约束命名子句和在实际应用中如何利用触发器实现复杂的数据控制。
摘要由CSDN通过智能技术生成

实体完整性

关系模型的实体完整性:

CREATE TABLE中用PRIMARY KEY定义
[例 5.1]将Student表中的Sno属性定义为码
1)在列级定义主码

CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
)

2)在表级定义主码

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)  /* 只能在表级定义主码 */
);

插入或更新操作时,DBMS按照实体完整性规则自动进行检查

  • 检查主码是否唯一,如果不唯一则拒绝插入或修改
  • 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改

参照完整性

关系模型的参照完整性定义

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

例如,关系SC中,(Sno,Cno)是主码。Sno,Cno分别参照Student表的主码和Course表的主码
[例 5.3]定义SC中的参照完整性

CREATE TABLE SC
 (Sno CHAR(9) NOT NULL,
 Cno CHAR(4) NOT NULL,
 Grade SMALLINT,
 PRIMARY KEY(Sno,Cno),/* 在表级定义实体完整性*/
 FROEIGN KEY(Sno) REFERENCES Student(Sno),/* 在表级定义参照完整性*/
 FOREIFN KEY(Cno) REFERENCES Course(Cno)/* 在表级定义参照完整性*/
 );

表 5.1 可能破坏参照完整性的情况及违约处理
在这里插入图片描述
[例 5.4]显式说明参照完整性的违约处理示例

CREATE TABLE SC
(Sno 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值