数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx

上传人:b****4 文档编号:13650720 上传时间:2022-10-12 格式:DOCX 页数:25 大小:777.93KB
下载 相关 举报
数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx_第1页
第1页 / 共25页
数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx_第2页
第2页 / 共25页
数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx_第3页
第3页 / 共25页
数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx_第4页
第4页 / 共25页
数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx

《数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

数据库安全性与完整性控制仲恺农业工程学院Word文档格式.docx

二、实验内容和步骤

1、新建数据库School并创建学生表Student,包含以下属性:

Sno(CHAR(5))、Sname(CHAR(8))、Ssex(CHAR

(1))、Sage(INT)、Sdept(CHAR(20)),

并插入数据:

('

10000'

'

王敏'

F'

23,'

CS'

),('

王浩'

M'

25,'

EE'

),

创建数据库、表以及插入数据的相关语句为:

CREATEDATABASESchool;

USESchool

CREATETABLEStudent(

SnoCHAR(5),

SnameCHAR(8),

SsexCHAR

(1),

SageINT,

SdeptCHAR(20));

INSERTINTOStudentvalues('

);

INSERTINTOStudentvalues('

执行完上述语句后查看数据库中student表中的数据。

然后再添加约束:

令Sno为主键,查看结果并分析原因。

验证当与现有的数据环境不等时,无法建立实体完整性。

执行上述语句所得的结果:

令Sno为主键的sql语句:

UseSchool

AltertableStudentadd

ConstraintPK_StudentPrimarykey(Sno)

执行结果

分析:

当前的数据环境不满足Sno成为主键,因为数据列Sno不满足实体完整性。

最后,请大家再运行如下语句创建student表:

Droptablestudent;

SnoCHAR(5)primarykey,

定义好表结构后,再执行如下两条插入语句,

分析违反实体完整性时,系统给出了何种处理。

并将王浩的学号改为10001重新插入。

执行上述语句的截图:

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为参照StudentCard表的外键,级联删除,并插入数据。

本题大家可以在如下语句上进行完善:

CREATETABLEStudentCard(

CardIDchar(14)PRIMARYKEY,

Snochar(5)REFERENCESStudent(Sno)ondeletecascade,

RemainedMoneydecimal(10,2)

INSERTINTOStudentCardVALUES('

05212567'

'

10001'

120.00);

05212302'

130.50);

执行上述sql语句得的截图:

CREATETABLEICBCCard(

BankIDchar(20)PRIMARYKEY,

CardIDchar(14),

RestoredMoneydecimal(10,2),

FOREIGNKEY(CardID)REFERENCESStudentCard(CardID)ondeletecascade,

INSERTINTOICBCCardVALUES('

9558844022312'

125000.3);

9558844023645'

150000.4);

截图如下:

注意:

请大家在建立外键时,StudentCard表的外键建立的列级,ICBCCard表建立在表级。

3.通过删除Student表中的一条记录,演示三个表的多重级联删除。

Sql:

deletefromStudentwhereSno=’10000’;

Select*fromStudent;

Select*fromStudentCard;

Select*fromICBCCard;

分析:

数据库中School表Student和ICBCCard的外键均设置为级联删除,故删除表Student中某些记录时,系统会自动检查表StudentCard,若找到相应记录则将它们随之删除;

同理表ICBCCard中相应的记录也随之删除。

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,U3规定Ddept属性的值唯一。

创建表的语句为:

CREATETABLEDirector(

DnoCHAR(5)constraintU1NOTNULL,

DnameCHAR(8),

DsexCHAR

(1),

DageINTconstraintU2CHECK(Dage<

=55),

DdeptCHAR(20)constraintU3UNIQUE);

本题在上述语句上添加必要的约束然后运行即可。

CONSTRAINTU3(约束名)是为了给出约束的名称,从而方便对该约束进行管理,否则是可以省略的。

5.Director表创建成功后,向其中插入三条数据,请逐一执行如下三条语句:

INSERTINTODirectorvalues('

90000'

赵磊'

45,'

艺术系'

90001'

韩丹'

60,'

中文系'

50,'

观察,三条语句执行时,可以正常插入吗?

如果不能正常插入,为什么?

第一个sql语句正常插入结果如下

第二个sql语句不可以正常插入结果如下:

原因是因为U2规定了Dage属性值必须小于等于55,所以错误!

第三个sql语句不可以正常插入结果如下 

:

原因是因为U3规定Ddept属性的唯一性 

!

6.修改U2约束,将Dage属性的取值由<

=55改为<

=60。

并重新执行5中的第二条语句:

观察执行结果,为什么?

执行截图如下:

原因是因为U2规定了Dage属性值必须小于等于60,而插入的Dage刚好是60!

所以可以插入!

7.创建规则rule_sex,规定插入或更新的值只能是M或F,并绑定到Director的Dsex字段。

完成后在对象资源管理器中查看School数据库规则设置。

SQL语句:

CREATERULErule_sexas@value=‘F,M’

EXECsp_bindrulerule_sex,‘Director.Dsex’;

8.演示违反规则rule_sex的插入操作。

执行语句:

90002'

蒋坤'

1'

34,'

管理系'

执行结果是什么?

为什么?

系统拒绝插入的原因是插入的数据与规则rule_sex冲突,操作中止!

9.建立一个在teacher表上的触发器tri_T5_teacher,要求当更新一个记录时,表中记录的Sage值要比老记录的Sage值大,因为一般工资级别只能升不能降。

建立该触发器之前,先创建teacher表,创建teacher表的语句为:

CREATETABLETeacher

Enonumeric(4)primarykey,

Enamechar(10),

Jobchar(8),

Salnumeric(7,2),

Deductnumeric(7,2),

Deptnonumeric

(2));

执行sql语句结果截图:

建立一个在teacher表上的触发器tri_T5_teacher:

createtriggertri_T5_teacheronTeacherforinsert,update

as

declare@Salnumeric(7,2)

select@Sal=Salfromdeleted

if(@Sal>

(selectSalfrominserted))

begin

Print'

Salmustbehigerthanbefore!

'

rollbacktransaction

end

执行截图:

触发器的创建请参照实验教材P64-66实验3.4以及上课时所讲的实例。

为了如下操作,可恢复数据库LibraryLib。

以下各题要验证各用户的权限,可以借助于查询分析器。

10.在SQLServer对象资源管理器中,设置服务器身份验证为SQLServer和Windows身份验证模式,并以SQLServer身份验证模式登录服务器,登录名和密码均为sa。

步骤:

首先打开SQLServer2000企业管理器,在控制台根目录下右击SQL服务器,在弹出的快捷菜单中选择“属性”命令,则出现“服务

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1