一.实验目的

(1)理解索引的概念与类型。
(2)掌握使用SQL Server Management Studio创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)掌握SQL Server下的数据库安全管理机制。

二. 实验内容

请分别通过SQL Server Management Studio和T-SQL语句完成该实验。

  1. 索引
    (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子句的条件不同

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐