实验九 索引及数据库安全
一.实验目的(1)理解索引的概念与类型。(2)掌握使用SQL Server Management Studio创建与维护索引的方法。(3)掌握T-SQL语句创建与维护索引的方法。(4)掌握SQL Server下的数据库安全管理机制。二. 实验内容请分别通过SQL Server Management Studio和T-SQL语句完成该实验。索引(1)为Student表创建一个以Sno为索引关键字的唯
一.实验目的
(1)理解索引的概念与类型。
(2)掌握使用SQL Server Management Studio创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)掌握SQL Server下的数据库安全管理机制。
二. 实验内容
请分别通过SQL Server Management Studio和T-SQL语句完成该实验。
-
索引
(1)为Student表创建一个以Sno为索引关键字的唯一聚簇索引,索引名为sno_index。若索引已存在,请先删除。
查看索引是否存在:

不存在,创建索引
使用T-SQL语句创建索引if exists(select * from sysindexes where name='sno_index') drop index Student.sno_index go create unique clustered index sno_index on Student(Sno) go
则先删除现有的聚集索引:
(2)为Student表创建以sname、sex为索引关键字的非聚簇索引,对Sname以升序排列,Sex以降序排列,索引名为ss_index。
按住CTRL键同时选中Sname,Sex两列,在"列"一栏中分别选择升序和降序

T-SQL语句create nonclustered index ss_index on Student(Sname asc,Sex desc);(3)将索引ss_index删除。

T-SQL语句drop index Student.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子句的条件不同
-
数据库安全
(1)注册一个“登录”(loginin),登录名为自己的学号,并将该登录加入服务器角色“system administrators”。
新建登录名:
在"登录名"处填写学号,然后选择"SQL Server身份验证",输入密码
然后在"角色服务器"中选择"sysadmin",最后单击"确定"退出

T-SQL语句:create login x2002252007 with password='2002252007'; sp_addsrvrolemember x2002252007,sysadmin;(2)注册一个“登录”(loginin),登录名为自己的姓名,该登录不属于任何服务器角色。

T-SQL语句:create login liliana with password='123456'(3)在数据库Student_info下创建一个用户,用户名为自己的学号,并将它和登录名为自己的学号的登录连在一起,察看该用户属于哪个数据库角色,对数据库对象有哪些操作权限。
在数据库student_info的"安全性"下,右键单击,选择"新建用户"
填写用户名和登录名,点击确定后退出
观察该用户:双击打开"x2002252007"用户,点击"用户映射"即可查看该用户属于哪个数据库角色,对哪些数据库有操作权限
T-SQL语句实现:use student_info go create user x2002252007 from login x2002252007(4)在数据库Student_info下创建一个用户,用户名为自己的姓名,并将它和登录名为自己的姓名的登录连在一起,查看该用户属于哪个数据库角色;编辑修改该用户属性,并为该用户分配数据库中各对象的操作权限:
用户创建与上一步创建一样,这里就不再显示
a.对Student表拥有全部权限。grant insert,update,delete on Student to liliana;b.对Course只有select 权限。
grant select on Course to lilianac.对SC表的Sno、Cno列具有select权限,对grade列没有任何权限。
grant select on SC(Sno,Cno) to liliana(5)创建一个自定义角色“学生”,并将以自己姓名命名的用户添加为其成员。
create role student; sp_addrolemember student, liliana(6)断开原来的链接,用学号重新登录,进入Student_info数据库,测试用学号登录后,是否拥有对数据库的全部操作权限(注意:该登录属于system administrators组)。

(7)断开原来的链接,用姓名登录,进入学生成绩数据库,测试用姓名登录后,拥有对数据库的哪些操作权限。
更多推荐

所有评论(0)