实验4数据库完整性控制

上传人:宝路 文档编号:21341453 上传时间:2017-11-23 格式:DOC 页数:4 大小:72.35KB
返回 下载 相关 举报
实验4数据库完整性控制_第1页
第1页 / 共4页
实验4数据库完整性控制_第2页
第2页 / 共4页
实验4数据库完整性控制_第3页
第3页 / 共4页
实验4数据库完整性控制_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验4数据库完整性控制》由会员分享,可在线阅读,更多相关《实验4数据库完整性控制(4页珍藏版)》请在金锄头文库上搜索。

1、4注意:为了节约大家的宝贵时间,因此给出题目时,会在一定程度上给出相关的语句,大家只需要补充完善相关的 SQL 语句即可。实验四 数据库完整性控制一、实验目的1掌握使用 T-SQL 定义实体完整性的方法。2. 了解 SQL Server 违反实体完整性处理措施。3. 理解参照完整性的含义。4. 熟练掌握建立外键的方法。5. 掌握利用 FOREIGN KEYREFERENCES 子句以及各种约束保证参照完整性。6掌握利用短语 NOT NULL、UNIQUE、CHECK 保证域完整性。7. 熟练掌握约束、规则实施用户自定义完整性8掌握创建触发器的方法,掌握利用触发器规范插入、更新、删除操作的方法。

2、二、实验内容1、新建数据库 School 并创建学生表 Student,包含以下属性:Sno (CHAR(5)、Sname (CHAR(8)、Ssex (CHAR(1)、Sage (INT)、Sdept (CHAR(20),并插入数据:( 10000, 王敏,F,23,CS),(10000,王浩,M,25,EE), 创建数据库、表以及插入数据的相关语句为:CREATE DATABASE School ;USE SchoolCREATE TABLE Student(Sno CHAR(5),Sname CHAR(8),Ssex CHAR(1),Sage INT,Sdept CHAR(20); IN

3、SERT INTO Student values ( 10000,王敏,F,23,CS);INSERT INTO Student values (10000,王浩,M,25,EE);执行完上述语句后查看数据库中 student 表中的数据。然后再添加约束:令 Sno 为主键,查看结果并分析原因。验证当与现有的数据环境不等时,无法建立实体完整性。4最后,请大家删除该 student 表,直接在定义表时给出实体完整性约束,要求给出把主键定义在表级和列级两种方法。定义好表结构后,再执行如下两条插入语句,INSERT INTO Student values ( 10000,王敏,F,23,CS);IN

4、SERT INTO Student values (10000,王浩,M,25,EE);列级:USE SchoolCREATE TABLE Student(Sno CHAR(5) primary key,Sname CHAR(8),Ssex CHAR(1),Sage INT,Sdept CHAR(20)表级:USE SchoolCREATE TABLE Student(Sno CHAR(5),Sname CHAR(8),Ssex CHAR(1),Sage INT,Sdept CHAR(20)primary key (Sno)4分析违反实体完整性时,系统给出了何种处理。并将王浩的学号改为 100

5、01 重新插入。请参照实验教材 P52-55 实验 3.1。2、验证多重级联删除。在数据库 School 中新建 StudentCard 表,包含以下属性:CardID (char(14)、Sno(char (5)、RemainedMoney (decimal (10,2),令 CardID 为其主键,令 Sno 为参照 Student 表的外键,级联删除,并插入数据;新建 ICBCCard 表,包含以下属性:BankID (char(20)、CardID (char (14)、RestoredMoney (decimal (10,2),令 BankID 为主键,令 CardID 为参照 St

6、udentCard 表的外键,级联删除,并插入数据。本题大家可以在如下语句上进行完善:CREATE TABLE StudentCard(CardID char(14),Sno char (5),RemainedMoney decimal (10,2);INSERT INTO StudentCard VALUES ( 05212567, 10001,120.00);INSERT INTO StudentCard VALUES ( 05212302, 10000,130.50);CREATE TABLE ICBCCard(BankID char(20),CardID char (14),Resto

7、redMoney decimal (10,2),);INSERT INTO ICBCCard VALUES ( 9558844022312,05212302,125000.3);INSERT INTO ICBCCard VALUES ( 9558844023645,05212567,150000.4); 注意:请大家在建立外键时,StudentCard 表的外键建立的列级,ICBCCard 表建立在表级。再执行以下语句:INSERT INTO StudentCard VALUES ( 05212568, 10002,120.00);观察会发生什么?为什么?3通过删除 Student 表中的一条

8、记录。Delete From Student where Sno=10000然后再查询 StudentCard、ICBCCard 表中的数据,观察发生了什么?第 2 和 3 题请参照实验教材 P55-61 实验 3.2。4. 在数据库 School 中新建 Director 表,包含以下属性: Dno (CHAR(5)、Dname (CHAR(8)、Dsex (CHAR(1)、Dage (INT)、Ddept (CHAR(20),并自定义 3 个约束U1、U2 和 U3,其中 U1 规定 Dno 字段不允许取空,U2 规定 Dage 属性的值必须=55,U34规定 Ddept 属性的值唯一。创

9、建表的语句为:CREATE TABLE Director(Dno CHAR(5),Dname CHAR(8) ,Dsex CHAR(1),Dage INT,Ddept CHAR(20);本题在上述语句上添加必要的约束然后运行即可。注意:CONSTRAINT U3(约束名)是为了给出约束的名称,从而方便对该约束进行管理,否则是可以省略的。5. Director 表创建成功后,向其中插入三条数据,请逐一执行如下三条语句 :INSERT INTO Director values (90000,赵磊,M,45,艺术系);INSERT INTO Director values (90001,韩丹,F,6

10、0, 中文系 );INSERT INTO Director values (90001,韩丹,F,50, 艺术系 );观察,三条语句执行时,可以正常插入吗?如果不能正常插入,为什么?6. 去除 U1 约束。7创建规则 rule_sex,规定插入或更新的值只能是 M 或 F,并绑定到 Director 的 Dsex字段。完成后在对象资源管理器中查看 School 数据库规则设置。8演示违反规则 rule_sex 的插入操作。执行语句:INSERT INTO Director values (90002,蒋坤,1,34,管理系);执行结果是什么?为什么?注意:第 4-8 题请参照实验教材 P61-

11、64 实验 3.3。9、完成实验 3.4 触发器设计建立该触发器之前,先创建 teacher 表,创建 teacher 表的语句为:CREATE TABLE Teacher(Eno numeric(4) primary key,Ename char(10),Job char(8),Sal numeric(7,2),Deduct numeric(7,2),Deptno numeric(2);10建立一个在 teacher 表上的触发器 T1,当插入或更新表中数据时,保证操作记录的 Sal 值大于 0,且不得低于 2100,如果低于 2100,自动改为 2100。触发器的创建请参照实验教材 P64-66 实验 3.4 以及上课时所讲的实例。11.建立一个在 student 表建立触发器 T2,要求当更新一个记录时,表中记录的 Sage 值要比老记录的 Sage 值大,因为一般年龄只能升不能降。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号