实验9索引.docx
《实验9索引.docx》由会员分享,可在线阅读,更多相关《实验9索引.docx(15页珍藏版)》请在冰豆网上搜索。
实验9索引
实验9-索引
实验九索引及数据库安全
一、实验目的
(1)理解索引的概念与类型。
(2)掌握使用SQLServerManagementStudio创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)掌握SQLSERVER下的数据库安全管理机制
二、实验内容
请分别通过SQLServerManagementStudio和T-SQL语句完成该实验。
1.索引
(1)为Student表创建一个以Sno为索引关键字的惟一聚簇索引,索引名为Sno_index。
若索引已存在,请先删除。
SQLServerManagementStudio:
、检查索引是否存在
如右图,该索引不存在
、创建索引
单击“添加”
T-SQL语句:
ifexists(select*fromsysindexeswherename='Sno_index')
dropindexStudent.Sno_index
createuniqueclusteredindexSno_index
onStudent(Sno)
先删除聚集索引'PK__Student__CA1FE4640BC6C43E'(这一步可能会不存在,依据题目做)
(2)为Student表创建以Sname,Sex为索引关键字的非聚簇索引,对Sname以升序来排列,Sex以降序排列,索引名为ss_index。
SQLServerManagementStudio:
、同时选中Sname,Sex两行,右击,选择“索引/键”,单击“添加”
、在“列”一行中,继续添加详细信息
按“确定”键退出
、添加其他信息
选择“关闭”退出
T-SQL语句:
createnonclusteredindexss_index
onStudent(Snameasc,Sexdesc)
(3)将索引文件ss_index删除。
SQLServerManagementStudio:
选择“删除”完成删除操作
T-SQL语句:
dropindexStudent.ss_index
(4)针对下列4条select语句,在查询分析器中查看这些语句的预执行计划,分析预执行计划的不同点及原因。
a.Select*fromStudent
b.Select*fromStudentwhereSno=’20110001’
c.Select*fromStudentwhereSnamelike‘张%’andSex=’女’
d.Select*fromStudentwhereClasSno=’051’
不同点:
执行处的结果不相同
原因:
where条件语句不同
2.数据库安全
(1)注册一个“登录”(loginin),登录名为自己的学号,并将该登录加入服务器角色“systemadministrators”。
SQLServerManagementStudio:
、在资源管理器中选择“安全性”→登录名→新建登录名
出现如下界面:
、添加信息
搜索结果中选择其一
单击确定退出
、在“服务器角色”中,选择服务器角色“systemadministrators”
单击确定退出
T-SQL语句:
createloginS2*******
withpassword='20110001'
sp_addsrvrolememberS2*******,sysadmin
(2)注册一个“登录”(loginin),登录名为自己的姓名,该登录不属于任何服务器角色。
createlogin张三
withpassword='20110001'
(3)在数据库Student_info下创建一个用户,用户名为自己的学号,并将它和登录名为自己的学号的登录连在一起,察看该用户属于哪个数据库角色,对数据库对象有哪些操作权限。
useStudent_info
go
createuserS20110001
forloginS20110001
权限操作:
资源管理器→安全性→用户→S2*******,右击,选择属性
(4)在数据库Student_info下创建一个用户,用户名为自己的姓名,并将它和登录名为自己的姓名的登录连在一起,察看该用户属于哪个数据库角色;
useStudent_info
go
createuser张三
forlogin张三
接下来的步骤同上理
编辑修改该用户属性,并为该用户分配数据库中各对象的操作权限:
a.对Student表拥有全部权限;
grantinsert,update,delete
onStudent
to张三
b.对Course只有select权限;
grantselect
onCourse
to张三
c.对sc表的Sno、cno列具有select权限,对Grade列没有任何权限。
grantselect(Sno,Cno)
onSC
to张三
(5)创建一个自定义角色“学生”,并将以自己姓名命名的用户添加为成员。
createrole学生
sp_addrolemember学生,张三
(6)断开原来的连接,用学号登录企业管理器,进入Student_info数据库,测试用学号登录后,是否拥有对数据库的全部操作权限(注意:
该登录属于systemadministrators组)。
用学号登录后,不拥有对数据库的全部操作权限
(7)断开原来的连接,用姓名登录企业管理器,进入学生成绩数据库,测试用姓名登录后,拥有对数据库的哪些操作权限。
只能对数据库进行查看,并不能修改