实验名称 实验7 索引及数据库安全 日期 2020年 6 月 19 日
一、实验目的:
(1)理解索引的概念与类型。
(2)掌握使用SQL Server Management Studio创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)掌握SQL Server下的数据库安全管理机制。
二、实验环境:
PC + Windows + SQL Server
三、实验内容
请分别通过SQL Server Management Studio和T-SQL语句完成该实验。
1.索引
(1)为Student表创建一个以Sno为索引关键字的唯一聚簇索引,索引名为sno_index。若索引已存在,请先删除。
截图:
(2)为Student表创建以sname、sex为索引关键字的非聚簇索引,对Sname以升序排列,Sex以降序排列,索引名为ss_index。
截图:
(3)将索引ss_index删除。
截图:
(4)针对下列4条select语句,在查询分析器中查看这些语句的预执行计划,分析预执行计划的不同点及原因。
a.Select * from student。
截图:
b.Select * from student where sno='20110001'。
截图:
c.Select * from student where sname like '张%' and sex='女'。
截图:
d.Select * from student where Classno='051'。
截图:
不同点:执行结果不相同
原因:where后面的条件不同
2.数据库安全
(1)注册一个“登录”(loginin),登录名为自己的学号,并将该登录加入服务器角色“system administrators”。
截图:
(2)注册一个“登录”(loginin),登录名为自己的姓名,该登录不属于任何服务器角色。
截图:
(3)在数据库Student_info下创建一个用户,用户名为自己的学号,并将它和登录名为自己的学号的登录连在一起,察看该用户属于哪个数据库角色,对数据库对象有哪些操作权限。
截图:
(4)在数据库Student_info下创建一个用户,用户名为自己的姓名,并将它和登录名为自己的姓名的登录连在一起,查看该用户属于哪个数据库角色;编辑修改该用户属性,并为该用户分配数据库中各对象的操作权限:
a.对Student表拥有全部权限。
截图:
b.对Course只有select 权限。
截图:
c.对SC表的Sno、Cno列具有select权限,对grade列没有任何权限。
截图:
(5)创建一个自定义角色“学生”,并将以自己姓名命名的用户添加为其成员。
截图:
(6)断开原来的链接,用学号重新登录,进入Student_info数据库,测试用学号登录后,是否拥有对数据库的全部操作权限(注意:该登录属于system administrators组)。
答:用学号登录后,不拥有对数据库的全部操作权限。
(7)断开原来的链接,用姓名登录,进入学生成绩数据库,测试用姓名登录后,拥有对数据库的哪些操作权限。
答:只能对数据库进行查看,不能修改。
四、心得体会(150字以上):
通过此次实验,理解了索引的概念与类型,掌握使用SQL Server Management Studio创建与维护索引的方法,掌握T-SQL语句创建与维护索引的方法,掌握SQL Server下的数据库安全管理机制。
索引不是不可缺少的,但是良好的索引可以显著提高数据库的性能。在一般应用中,特别是在查询应用中,索引能显著提高查询的速度和效率。数据库是重要的共享信息资源,必须加以保护。数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。