一.实验目的
(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 liliana
c.对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)断开原来的链接,用姓名登录,进入学生成绩数据库,测试用姓名登录后,拥有对数据库的哪些操作权限。