实验四数据控制(完整性部分).ppt

上传人:小飞机 文档编号:5258450 上传时间:2023-06-20 格式:PPT 页数:35 大小:431.50KB
返回 下载 相关 举报
实验四数据控制(完整性部分).ppt_第1页
第1页 / 共35页
实验四数据控制(完整性部分).ppt_第2页
第2页 / 共35页
实验四数据控制(完整性部分).ppt_第3页
第3页 / 共35页
实验四数据控制(完整性部分).ppt_第4页
第4页 / 共35页
实验四数据控制(完整性部分).ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《实验四数据控制(完整性部分).ppt》由会员分享,可在线阅读,更多相关《实验四数据控制(完整性部分).ppt(35页珍藏版)》请在三一办公上搜索。

1、实验四 数据控制(完整性部分),1.实体完整性,【例 1】定义表的主码。关系模型的实体完整性在 CREATE TABLE 中用 PRIMARY KEY 定义。定义主码的方法 分为定义为列级约束条件和定义为表级约束条件两种。,例 1-1定义表 Student,并将其中的 Sno 属性定义为主码。,首先建立一个模式,然后打开查询分析器 输入:CREATE TABLE STUDENT(SNO CHAR(7)PRIMARY KEY,SNAME CHAR(8)NOT NULL,SSEX CHAR(2),SAGESMALLINT,SDEPT CHAR(20);或者:CREATE TABLE STUDENT

2、(SNOCHAR(7),SNAMECHAR(8),SSEXCHAR(2),SAGE SMALLINT,SDEPTCHAR(20),PRIMARY KEY(SNO);,模式下的就会建一个STUDENT表,例 1-2定义表 SC,将其中的属性 Sno,Cno 定义为主码。,CREATE TABLE 4.SC(SNO CHAR(7)NOT NULL,CNO CHAR(4)NOT NULL,GRADE SMALLINT,PRIMARY KEY(SNO,CNO);,2.参照完整性。,【例 2】定义表的外码。关系模型的参照完整性是在 CREATE TABLE 中用 FOREIGN KEY 语句来定义的,并

3、用REFERENCES 来指明外码参照的是哪些表的主码。,定义表 SC,其中 Sno 参照表 Student 的主码 Sno,Cno 参照表 Course 的主码 Cno。,CREATE TABLE SC(SNO CHAR(7)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);,注意,运行前先把之前做的SC表删除,并建立COURSE表,输入下列数据,CREAT

4、E TABLE 4.COURSE(CNOCHAR(7)PRIMARY KEY,CNAME CHAR(8)NOT NULL,TNOCHAR(2)NOT NULL,CREDIT INTEGER NOT NULL);,COURSE表,SC表,3.用户定义完整性。,【例 3】用户定义的属性上的约束条件。例 3-1列值非空。在定义 SC 表时,Sno、Cno 和 Grade 属性都不允许取空值。在不特别声明的情况下,非码属性的值是允许取空值的。,一样先删除之前的SC表,CREATE TABLE“4”.”SC”(SNOCHAR(7)NOT NULL,/*列值非空的约束 NOT NULL*/CNOCHAR(

5、4)NOT NULL,GRADESMALLINT NOT NULL);,新SC表,例 3-2列值唯一。建立部门表 DEPT,要求部门名称 Dname 取值唯一,部门编号 Deptno 属 性为主码。,CREATE TABLE 4.DEPT(DEPTNO NUMERIC(7)PRIMARY KEY,DNAME VARCHAR(9)UNIQUE,/*UNIQUE 约束要求 Dname 取值唯一*/LOCATION VARCHAR(10);,DEPT表,例 3-3CHECK 短语指定列值应该满足的条件。定义表 Student,属性 Ssex 的值只允许取“男”或“女”;先删除之前的STUDENT的表

6、,CREATE TABLE 4.STUDENT(SNOCHAR(7)PRIMARY KEY,SNAME CHAR(8)NOT NULL,SSEXCHAR(2)CHECK(SSEX IN(男,女),/*CHECK 语句约束条件*/SAGESMALLINT,SDEPTCHAR(20);,STUDENT,定义表 SC,属性 Grade 的值定义在 0100 之间。删除之前的SC表,CREATE TABLE 4.SC(SNO CHAR(7)NOT NULL,CNO CHAR(4)NOT NULL,GRADE SMALLINT CHECK(GRADE0 AND GRADE100),/*CHECK 语句约

7、束*/PRIMARY KEY(SNO,CNO),FOREIGN KEY(SNO)REFERENCES 4.STUDENT(SNO),FOREIGN KEY(CNO)REFERENCES 4.COURSE(CNO);,SC,【例 4】用户定义的元组上的约束条件。,CHECK 短语不光能够定义属性列上的约束条件,还允许用户定义元组级的约束条件。定义表 Student,要求当学生性别为男时,其名字不能以 Ms.打头。,STUDENT,CREATE TABLE 4.STUDENT(SNOCHAR(7)PRIMARY KEY,SNAME CHAR(8)NOT NULL,SSEXCHAR(2),SAGES

8、MALLINT,SDEPT CHAR(20),CHECK(SSEX=女 OR SNAME NOT LIKE Ms.%);/*定义了 Sname 和 Ssex 之间的约束条件*/,4.CONSTRAINT 完整性约束命名子句。,【例 5】在定义表时利用约束命名子句对完整性约束条件命名,能够灵活地增加或删除一个 完整性约束条件。例 5-1定义表 Student,要求学号在 9000099999 之间,姓名不能取空值,年龄小于 30,性别只能是“男”或“女”。要求全部用约束命名子句实现。,STUDENT,CREATE TABLE 4.STUDENT(SNO NUMERIC(5)CONSTRAINT

9、C1 CHECK(SNO BETWEEN 90000 AND 99999),SNAME VARCHAR(20)CONSTRAINT C2 NOT NULL,SAGE NUMERIC(3)CONSTRAINT C3 CHECK(SAGE 30),SSEX VARCHAR(2)CONSTRAINT C4 CHECK(SSEX IN(男,女),CONSTRAINT STUDENTKey PRIMARY KEY(SNO);,在表 Student 上共定义了 5 个约束条件,包括主码约束以及 C1、C2、C3、C4 四个列级 约束。,例 5-2修改表 Student 中的完整性限制,去掉对性别的限制,并

10、将年龄的限制由小于 30 改 为小于 40。,ALTER TABLE 4.STUDENT/*去掉对性别的限制条件 C4*/DROP CONSTRAINT C4;ALTER TABLE 4.STUDENT/*先删掉原来的约束条件再增加一个新的约束条件*/DROP CONSTRAINT C3;ALTER TABLE 4.STUDENTADD CONSTRAINT C3 CHECK(SAGE 40);,5.触发器。触发器可以看成是一类特殊的存储过程,在满足某个特定条件时自动触发执行,是提高数据库服务器性能的有力工具。触发器分为三类,更新触发器、插入触发器和删除触发器。能够定义触发器的用户有:,1)表

11、的所有者;2)系统管理员;3)拥有创建触发器的权限,且拥有对操作对象的相应的操作权限的用户。,【例 6】定义表 TAB,并在其上定义触发器 TRI,在对 TAB 的插入和更新前检查,如果插入 或更新的值在 1001000 之间的话,将值置为 50;如果值大于 1000 的话,则给出新值不允 许大于 1000 的提示。,CREATE TABLE 4.TAB(col int);INSERT INTO 4.TAB VALUES(10);INSERT INTO 4.TAB VALUES(20);CREATE TRIGGER TRI BEFORE UPDATE OR INSERTON 4.TAB FOR

12、 EACH ROW AS BEGIN IF new.col 100 AND new.col 1000 THEN RAISE EXCEPTION New values can not more than 1000;END IF;END;,TAB表,TRI触发器,检测:1)向表 TAB 插入数据(150)。执行:INSERT INTO 4.TAB VALUES(150);,结果:插入的数据为 150。值在 1001000 之间,触发器 TRI 自动执行,将插入 的值置为 50。,2)对表中的数据进行更新,将 20 更新为 1500。执行:UPDATE TAB SET COL=1500 WHERE COL=20;,结果:系统报出New values can not more than 1000的错误,对表进行查询后发现,表中的数据并没有发生改变。说明在更新数据时,值大于 1000则触发触发器 TRI 自动执行,系统报错,更新无效。,【例 7】删除触发器 TRI。DROP TRIGGER TRI ON TAB;,删除触发器 TRI 之后,在对 TAB 进行插入和更新就不再有以上限制了。,SEE YOU,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号