实验四数据控制(完整部分).doc_第1页
实验四数据控制(完整部分).doc_第2页
实验四数据控制(完整部分).doc_第3页
实验四数据控制(完整部分).doc_第4页
实验四数据控制(完整部分).doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目:实验四 数据控制(完整性部分) 姓名Vivian日期 2005-1-1实验内容及完成情况:实验环境介绍:硬件:CPU:P3 800硬盘:30G内存:512M系统:Windows 2000Advanced Server在本实验中,我们将对完整性进行讨论,包括 3 类完整性、CHECK 短语、CONSTRAIN子句、触发器。因为完整性约束绝大部分是在定义表结构时进行的,因此可能需要多次定义表,如果表名发生重复的话,可以先将旧表删除后再建立。1. 实体完整性【例 4】定义表的主码。关系模型的实体完整性在 CREATE TABLE 中用 PRIMARY KEY 定义。定义主码的方法分为定义为列级约束条件和定义为表级约束条件两种。例 4-1定义表 Student,并将其中的 Sno 属性定义为主码。CREATE TABLE STUDENT(SNOCHAR(7) PRIMARY KEY,SNAME CHAR(8) NOT NULL,SSEXCHAR(2),SAGESMALLINT,SDEPT CHAR(20);或者:CREATE TABLE STUDENT(SNOCHAR(7),SNAME CHAR(8),SSEXCHAR(2),SAGESMALLINT,SDEPTCHAR(20),PRIMARY KEY (SNO);例 4-2定义表 SC,将其中的属性 Sno,Cno 定义为主码。对于多个属性构成的码,只能够将其定义为表级约束条件,而无法用列级约束条件来实现。CREATE TABLE SC(SNO CHAR(7) NOT NULL,CNO CHAR(4) NOT NULL,GRADE SMALLINT,PRIMARY KEY (SNO,CNO);2. 参照完整性。【例 5】定义表的外码。关系模型的参照完整性是在 CREATE TABLE 中用 FOREIGN KEY 语句来定义的,并用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);3. 用户定义完整性。【例 6】用户定义的属性上的约束条件。例 6-1列值非空。在定义 SC 表时,Sno、Cno 和 Grade 属性都不允许取空值。在不特别声明的情况下,非码属性的值是允许取空值的。CREATE TABLE SC(SNO CHAR(7) NOT NULL,/*列值非空的约束 NOT NULL*/CNO CHAR(4) NOT NULL,GRADESMALLINT NOT NULL);例 6-2列值唯一。建立部门表 DEPT,要求部门名称 Dname 取值唯一,部门编号 Deptno 属性为主码。CREATE TABLE DEPT(DEPTNO NUMERIC(7) PRIMARY KEY,DNAME VARCHAR(9) UNIQUE,/*UNIQUE 约束要求 Dname 取值唯一*/LOCATION VARCHAR(10);例 6-3CHECK 短语指定列值应该满足的条件。定义表 Student,属性 Ssex 的值只允许取“男”或“女”;定义表 SC,属性 Grade 的值定义在 0100 之间。CREATE TABLE STUDENT(SNOCHAR(7) PRIMARY KEY,SNAME CHAR(8) NOT NULL,SSEXCHAR(2) CHECK(SSEX IN(男,女),/*CHECK 语句约束条件*/SAGESMALLINT,SDEPT CHAR(20);CREATE TABLE SC(SNO CHAR(7) NOT NULL,CNO CHAR(4) NOT NULL,GRADE SMALLINT CHECK (GRADE0 AND GRADE100), /*CHECK语句约束条件*/PRIMARY KEY (SNO,CNO),FOREIGN KEY (SNO) REFERENCES STUDENT(SNO),FOREIGN KEY (CNO) REFERENCES COURSE(CNO);【例 7】用户定义的元组上的约束条件。CHECK 短语不光能够定义属性列上的约束条件,还允许用户定义元组级的约束条件。定义表 Student,要求当学生性别为男时,其名字不能以 Ms.打头。CREATE TABLE STUDENT(SNOCHAR(7) PRIMARY KEY,SNAME CHAR(8) NOT NULL,SSEXCHAR(2),SAGESMALLINT,SDEPT CHAR(20),CHECK (SSEX = 女 OR SNAME NOT LIKE Ms.%);/*定义了 Sname 和 Ssex 之间的约束条件*/4. CONSTRAINT 完整性约束命名子句。【例 8】在定义表时利用约束命名子句对完整性约束条件命名,能够灵活地增加或删除一个完整性约束条件。例 8-1定义表 Student,要求学号在 9000099999 之间,姓名不能取空值,年龄小于 30,性别只能是“男”或“女”。要求全部用约束命名子句实现。CREATE TABLE STUDENT(SNO NUMERIC(5)CONSTRAINT 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 四个列级约束。例 8-2修改表 Student 中的完整性限制,去掉对性别的限制,并将年龄的限制由小于 30 改为小于 40。ALTER TABLE STUDENT/*去掉对性别的限制条件 C4*/DROP CONSTRAINT C4;ALTER TABLE STUDENT/*先删掉原来的约束条件再增加一个新的约束条件*/DROP CONSTRAINT C3;ALTER TABLE STUDENTADD CONSTRAINT C3 CHECK(SAGE 100 AND new.col 1000 THENRAISE EXCEPTION New values can not more than 1000;END IF;END;检测:1)向表 TAB 插入数据(150)。执行:INSERT INTO TAB VALUES(150);结果:插入的数据为 150。值在 1001000 之间,触发器 TRI 自动执行,将插入的值置为 50。2)对表中的数据进行更新,将 20 更新为 1500。执行:UPDATE TAB SET COL = 1500 WHERE COL = 20;结果:系统报出New values can

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论