数据库的完整性和安全性实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息工程学院实验报告
课程名称:《数据库原理》
实验项目名称:数据库的完整性和安全性
一、实 验 目 的:
(1)掌握数据库约束的概念;
(2)熟悉SQL SERVER 的完整性约束技术。 (3)了解SQL SERVER 的违反完整性处理措施。 (4)了解登录账户的管理理念与具体方法。 (5)了解数据库用户的管理的要则。 (6)了解用户权限管理的内涵与方法。 二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤
(一)测试完整性
运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。
1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2)
PRIMARY KEY
dname
V ARCHAR(20) NOT NULL,UNIQUE
(1)增加数据
INSERT INTO dept V ALUES('D1','计科系');----正常插入
INSERT INTO dept V ALUES('D2','电信系');----正常插入
INSERT INTO dept V ALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则
INSERT INTO dept V ALUES('D2','机械系'); ----违反dno 主键(UNIQUE )
INSERT INTO dept V ALUES('D3',NULL); ----违反dname 的NOT NULL 规则
INSERT INTO dept V ALUES('D3','计科系'); ----违反dname 的UNIQUE 规则
INSERT INTO dept V ALUES('D3','机械系');----正常插入
(2)删除数据
DELETE FROM dept WHERE dno='D3';----正常删除
(3)修改数据
UPDA TE dept SET dname='计算机科学系' WHERE dno='D1';----正常修改
UPDA TE dept SET dname='电信系' WHERE dno='D1'; ----违反dname的UNIQUE规则
UPDA TE dept SET dname=NULL WHERE dno='D1'; 违反dname的UNIQUE规则
2.对student表进行数据增删改,并检查完整性规则
Student已存在完整性规则如下:
sno CHAR(2) PRIMARY KEY
sname V ARCHAR(20) NOT NULL,
ssex CHAR(2) NOT NULL, CHECK(ssex in('男','女'))
sage INT NOT NULL,
dno CHAR(2) NOT NULL, FOREIGN KEY REFERENCES dept(dno)
ON DELETE CASCADE ON UPDATE CASCADE
(1)增加数据
INSERT INTO student V ALUES('S1','张刚','男',20,'D1');----正常插入
INSERT INTO student V ALUES('S2','李梅','女',21,'D2');----正常插入
INSERT INTO student V ALUES('S2','吴敏','男',20,'D1'); ----正常插入
INSERT INTO student V ALUES(NULL,'吴敏','男',20,'D1'); ----违反sno 的主键(NOT NULL)规则
INSERT INTO student V ALUES('S3','吴敏','男',NULL,'D1'); 违反sage 的主键(NOT NULL)规则
INSERT INTO student V ALUES('S3','吴敏','M',20,'D1'); 违反ssex 的CHECK规则
INSERT INTO student V ALUES('S3','吴敏','男',20,'D3'); ----正常插入
INSERT INTO student V ALUES('S3','吴敏','男',20,'D1');----正常插入
(2)删除数据
DELETE FROM student WHERE sno='S3'; ----正常删除
(3)修改数据
UPDA TE student SET sname='赵强',dno='D2' WHERE sno='S1'-----正常修改
UPDA TE student SET ssex='F' WHERE sno='S1'; -----违反ssex的CHECK 规则
UPDA TE student SET sno='S2' WHERE sno='S1'; -----违反sno的主键(UNIQUE)规则
UPDA TE student SET dno='D3' WHERE sno='S1'; 违反dno 的外键规则
UPDA TE dept SET dno='D3' WHERE dno='D1';----检查dno的外键ON UPDATE规则,观察运行后效果
DELETE FROM dept WHERE dno='D2';----检查dno的外键ON DELETE规则,观察运行后效果
(二)使用规则实现数据完整性
(1)在查询分析器中,利用命令(CREATE RULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。CREATE RULE rule_sage as@sage between 1 and 100;
Sp_bindrule'rule_sage','student.sage';
(2)在查询分析器中,利用命令(CREATE RULE),创建一个关于学分(credit)约束的规则,将“credit”列的值约束在1~8之间的整数;然后将所创建的规则绑定到“credit”列(提示:用命令Sp_bindrule)。CREATE RULE rule_credit as@credit between 1 and 8;
Sp_bindrule'rule_credit','course.credit';
(3)在企业管理器中,创建一个关于成绩(grade)约束的规则,将“grade”列的值约束在0~100以内;然后将所创建的规则绑定到“grade”列。
CREATE RULE rule_grade as@grade between 1 and 100;
Sp_bindrule'rule_grade','study.grade';
(三)使用触发器实现数据完整性(选做)
(1)在查询分析器中,输入以下CREATE TRIGGER语句,创建以下触发器:为student表创建一个