数据库的完整性和安全性实验报告_第1页
数据库的完整性和安全性实验报告_第2页
数据库的完整性和安全性实验报告_第3页
数据库的完整性和安全性实验报告_第4页
数据库的完整性和安全性实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

信息工程学院实验报告成绩:课程名称:《数据库原理》成绩:指导老师(签名):实验项目名称:数据库的完整性和安全性指导老师(签名):一、 实验目的:(1) 掌握数据库约束的概念;(2) 熟悉SQLSERVER的完整性约束技术。(3) 了解SQLSERVER的违反完整性处理措施。(4) 了解登录账户的管理理念与具体方法。(5) 了解数据库用户的管理的要则。(6) 了解用户权限管理的内涵与方法。二、 实验设备与器件Win7+Sqlserver2008三、 实验内容与步骤(一)测试完整性运行附录中的SQL语句,理解SQL语句中包含的完整性定义。然后执行下面的SQL语句,看是否能正常运行,若无法执行,请说明原因。对dept表进行数据增删改,并检查完整性规则Dept已存在的完整性规则如下:dno CHAR(2) PRIMARYKEYdnameVARCHAR(20) NOTNULL,UNIQUE(1)增加数据INSERTINTOdeptVALUES('D1','计科系');----正常插入,二行受最■响INSERTINTOdeptVALUES('D2','电信系');----正常插入INSERTINTOdeptVALUES(NULL,'机械系');----违反dno主键(NOTNULL)规则不能将值NU11插入列1dr.o1,表'mydh.dha.depz.1;列不允许有Null值。IHSEPI失败。语句已终止。INSERTINTOdeptVALUES('D2','机械系');----违反dno主键(UNIQUE)违反了 KZY约束F斗土pk,不能在对象'^bc.dept1中插人重复禳口语句已终止。INSERTINTOdeptVALUES('D3',NULL);----违反dname的NOTNULL规则不能将■值NULL插入列1dn=n-.e1,表'mydh.dho.dept1;列不允许有Null值■>INSZzI失败口语句已终止。INSERTINTOdeptVALUES('D3','计科系');----违反dname的UNIQUE规则违反了U11=^UZ 约束T叩t_LLk\不能在对象^ept'中插入重复键。语句已终止。INSERTINTOdeptVALUES('D3','机械系');----正常插入删除数据DELETEFROMdeptWHEREdno='D3';---正常删除修改数据UPDATEdeptSETdname='计算机科学系'WHEREdno='D1';----正常修改UPDATEdeptSETdname='电信系'WHEREdno='D1';----违反dname的UNIQUE规则违反了Ull工泗三淀Y约束1depz_uk1o不能在对象'dho.depz-1中插入重复键。语句已终止。UPDATEdeptSETdname=NULLWHEREdno='D1';违反dname的UNIQUE规则不能将值NUll插入列1dn=n-.e',表'mydh.dbs.deps1;列不允许有l吒11值。UPDATZ失败口语句已终止。对student表进行数据增删改,并检查完整性规则Student已存在完整性规则如下:snoCHAR(2)PRIMARYKEYsnameVARCHAR(20)NOTNULL,ssexCHAR(2) NOTNULL,CHECK(ssexin('男','女'))sageINT NOTNULL,dnoCHAR(2)NOTNULL,FOREIGNKEYREFERENCESdept(dno)ONDELETECASCADEONUPDATECASCADE⑴增加数据INSERTINTOstudentVALUES('S1','张刚','男',20,'D1');----正常插入INSERTINTOstudentVALUES('S2','李梅','女',21,'D2');----正常插入INSERTINTOstudentVALUES('S2','吴敏','男',20,'D1');----正常插入INSERTINTOstudentVALUES(NULL,'吴敏','男',20,'D1');----违反sno的主键(NOTNULL)规则不能将值HUH插入列1-r.D1,表■mydb.dbc.E-.uder^1;列不允讦有Null值。INSERT失败。语句已终止。INSERTINTOstudentVALUES('S3','吴敏','男',NULL,'D1');违反sage的主键(NOTNULL)规则不能将■值NU11插入列七三",表'mydh.dho.s-.udenz.1;列不允许有Hull值口INSEPI失畋。语句已终止。INSERTINTOstudentVALUES('S3','吴敏','M',20,'D1');违反ssex的CHECK规则IUSEP.T语句与CHECK约束Irstudent_ckIr冲突■,该冲突发生于数据库irmydh",表Irdh=.student'1语句已终止。INSERTINTOstudentVALUES('S3','吴敏','男',20,'D3');----正常插入INSERTINTOstudentVALUES('S3','吴敏','男',20,'D1');----正常插入删除数据DELETEFROMstudentWHEREsno='S3';----正常删除修改数据UPDATEstudentSETsname='赵强',dno='D2'WHEREsno='S1'-----正常修改UPDATEstudentSETssex='F'WHEREsno='S1';-----违反ssex的CHECK规则。行受影响UPDATEstudentSETsno='S2'WHEREsno='S1';-----违反sno的主键(UNIQUE)规则o行受影响UPDATEstudentSETdno='D3'WHEREsno='S1';违反dno的外键规则o行受影响UPDATEdeptSETdno='D3'WHEREdno='D1';---检查dno的外键ONUPDATE规则,观察运行后效果违反了邳工皿*壬寰约束不能在对象'dh2.depz1中插入重复键。语句已终止。DELETEFROMdeptWHEREdno='D2';----检查dno的外键ONDELETE规则,观察运行后效果1行受影响(二)使用规则实现数据完整性(1)在查询分析器中,利用命令(CREATERULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。CREATERULErule_sageas@sagebetween1and100;Sp_bindrule'rule_sage','student.sage';已将规则绑定到表的列-(2) 在查询分析器中,利用命令(CREATERULE),创建一个关于学分(credit)约束的规则,将“credit”列的值约束在1~8之间的整数;然后将所创建的规则绑定到“credit”列(提示:用命令Sp_bindrule)oCREATERULErule_creditas@creditbetween1and8;命令已成功完成口Sp_bindrule'rule_credit','course.credit';-白将规则绑定到表的列。(3) 在企业管理器中,创建一个关于成绩(grade)约束的规则,将“grade”列的值约束在0~100以内;然后将所创建的规则绑定到“grade”列。CREATERULErule_gradeas@gradebetween1and100;命令已成功完成。Sp_bindrule'rule_grade','study.grade';已将规则绑定到表的列。(三)使用触发器实现数据完整性(选做)(1)在查询分析器中,输入以下CREATETRIGGER语句,创建以下触发器:为student表创建一个INSERT触发器,当插入的新行中年龄的值不是0~180时,就激活该触发器,撤销该插入操作,并使用RAISERROR语句返回一个错误信息。(2)在查询分析器中,执行INSERT语句为student表添加一年龄为220的学生,此时触发器是否执行?分析原因。(四)测试数据库安全性设置身份验证模式:右键服务器实例,选择”属性”,在"Security”(安全性)项中,将”服务器身份验证”设置为"SQLServer和Windows身份验证模式”,确定。根据提示重新启动sql服务。然后执行下面的语句启用sa用户。OWindows身份验证模式也)@SQLServer和Windows身份验证模式底)sp_password[[@old=]'old_password',]([@new=]'new_password'}[,[@loginame=]'login']EXECsp_passwordnull,db123456,'sa'ALTERLOGINsaENABLE命令已成功完成口建立登录、授予登录的服务器角色。(1) 建立和删除登录打开企业管理器和查询分析器,以超级用户sa连接SQLServer服务器,建立SQLServer登录,登录名为loginsql,并设置口令为123456。sp_addlogin'loginsql','123456'另外打开SQLServerManagementStudio,以loginsql登录连接服务器,测试服务器权限。试运行CREATEDATABASEtest能否成功?(2) 以sa登陆查询分析器,授予loginsql登录的服务器角色 'dbcreator',sp_addsrvrolemember'loginsql','dbcreator'然后以loginsql登录查询分析器,并运行CREATEDATABASEtest,能否成功?llr^消息'命令已成功完成-创建用户、授予用户的权限。(1)以sa登陆查询分析器,建立数据库。CREATEDATABASEdbstudentgoUSEdbstudentg°CREATETABLEtbstudent(snoint,snamevarchar(10));以loginsql登录查询分析器,测试能否使用数据库?(2)以sa登陆查询分析器,创建用户,授予用户的权限sp_adduser'loginsql','usera'以loginsql登录另一个查询分析器,进入数据库dbstudent(usera用户),测试权限。可以使用数据库dbstudentsa授予用户语句权限GRANTCREATETABLETOusera授予用户的对象权限GRANTSELECTONtbstudentTOuseraGRANTINSERTONtbstudentTOusera再次以loginsql登录进入数据库dbstudent(usera用户),测试被授予权限。创建数据库角色,授予数据库角色的权限。(1)sa进入数据库,创建数据库角色USEdbstudentgosp_addrole'rolea'(2)授予数据库角色的权限GRANTCREATETABLETOroleaGRANTSELECT,INSERT,deleteONtbstudentTOrolea(3)授予用户的数据库角色sp_addrolemember'rolea','usera',测试loginsql登录是否具有update权限insertintotbstudentvalues(*103*,'jake')updatetbstudentsetsname=*tom*wheresno=*103*不具有update权限以sa登录运行语句sp_addrolemember'db_datawriter','usera',再次测验loginsql的update权限。回收数据库角色、用户、登录的权限,删除数据库角色、用户、登录。回收用户的数据库角色sp_droprolemember'rolea','usera'sp_droprolemember'db_datawriter','usera'回收数据角色权限REVOKECREATETABLEFROMroleaREVOKESELECT,INSERTONtbstudentFROMrolea删除数据库角色sp_droprole'rolea'回收用户的对象权限REV

温馨提示

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

评论

0/150

提交评论