1、2 掌握SQL Server中的安全性相关的登录名,角色以及用户的创建以及使用方法。3 学会使用T-SQL语句对数据库和表操作的灵活控制功能。实验准备1 了解与视图相关的各种SQL语句。2 了解登录名,角色以及用户的创建以及使用方法。3 了解T-SQL语句在对数据库和表的控制权限相关命令(GRANT/REVOKE)的用法。实验内容和步骤结果1 在Student数据库中,利用图形用户界面,创建一个选修了数据库课程并且是1986年出生的学生的视图,视图中包括学号,性别,成绩这三个信息。(5分)具体步骤:在Management Studio 的对象资源管理器中,展开student数据库,单击“视图”
2、,右击,从弹出的快捷菜单中选择“新建视图”菜单项,出现所示的新建视图对话框,在该对话框中,通过选定一个或者多个表,指定字段,设定连接或限制条件,最后单击保存工具按钮,给视图取个名字,就完成了视图的创建,如图3-11所示。设计视图前选定表选中选修数据库并且是1986年生的学生2 用两种不同的SQL语句创建课本128页第11题中要求的视图(视图名:V_SPJ)(6分,每种方法3分)。SQL源码:createviewV_SPJasselectSNO,PNO,QTYfrom供应情况表SPJ,工程项目表Jwhere供应情况表SPJ.JNO=工程项目表J.JNO and工程项目表J.JNAME=三建第二种
3、from供应情况表SPJwhereJNOin(selectJNOfrom工程项目表Jwhere 工程项目表J.JNAME=)运行结果:3 用SQL语句完成课本128页第11题中对视图V_SPJ的查询(4分,每小题2分)。(1) 找出三建工程项目使用的各种零件代码及其数量;SQL代码以及运行结果(2) 找出供应商s1的供应情况。SQL代码以及运行结果:4 用T-SQL语句操作视图的数据。(15分,每题5分)(1) 给视图V_SPJ中增加一条数据(基本表中有插入的数据即可);SQL代码:insertintoV_SPJ(sno,pno,qty)values (s3,p2,100)由于基本表中插入的数
4、据JNO是NULL,所以视图中看不到新插入的数据(2) 修改视图V_SPJ中的任意一条数据的供应数量;updateV_SPJsetqty= 400 wheresno=s2(3) 删除视图V_SPJ中的任意一条数据。deletefromV_SPJwheresno=orsno=5 在图形用户界面中创建新登录名以及用户。(20分,每题10分)(1) 对于数据库company创建P148页第 8题中所需要用到的各个用户以及相关的关的登录名。(假定有数据库company,库中有两个表e(职工表)和d(部门表);步骤如下:启动Management Studio, 分别展开“服务器”、“数据库”、“安全性”
5、、“用户”,在“用户”文件夹下能看到该数据库的已用用户;右击“用户”文件夹,选择“新建数据库用户”,弹出“数据库用户-新建”对话框; 输入要创建的数据库用户的名字,然后在“登录名”对应的文本框中输入相应的登录名,或者单击“浏览”按钮,在系统中选择相应的登录名;单击“确定”按钮,将新创建的数据库用户添加到数据中。所示创建登录名username1创建company数据库刘星用户(2) 用图形用户界面完成以下的权限赋予:(a) 用户王明对两个表有Select和Insert的权力; 所示授予用户王明对e表有Select和Insert的权力 所示授予用户王明对e表有Select和Insert的权力图和上
6、图类似。(b) 用户李勇对职工表具有Select权力,对工资字段具有更新权力6 用T-SQL语句授权和收回权限并加以验证。(50分,每题5分)(1) 用户李勇对两个表有insert和delete权力;grantinsert,deleteoneto李勇ondE表的图类似上图,为节省空间,忽略此图。(2) 每个职工只对自己的记录有select权力;createviewV_companyasselect*fromewhere姓名=CURRENT_USERgrantselectonV_companytopublic注意以上两行必须分开运行,因为create和grant语句不能一起执行。(3) 用户刘星
7、对职工表有select权力,对工资字段具有更新权力;grantselect,update(工资)to刘星(4) 用户周平具有对两个所有权力(读、插、改、删数据),并具有给其他用户授权的权力;grantallto周平withgrantoption虽然已经提示了all应用不是很好,但是还没有找到解决方法。(5) 用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权力,他不能查看每个人的工资;createviewV_salaryasselect职工号,MAX(工资)maxsal,min(工资)minsal,avg(工资)avgsalfromegroupby职工号grantsele
8、ctonV_salaryto杨兰同样以上两行代码必须分开运行。理由同上(6) 撤销每个职工对自己记录的select权力;revokeselectonV_companytopublicdrop V_company(7) 撤销用户刘星对职工表有select权力,对工资字段具有更新权力;revokeselect,update (工资)(8) 撤销用户周平具有对两个所有权力(读、插、改、删数据),并具有给其他用户授权的权力;revokeallcascadecascade对应的是with grant option,只有这样才可以删除周平的对应关系。图形类似刘星的图形,因为什么数据都没有,所以此图省略。(
9、9) 撤销用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权力,他不能查看每个人的工资;revokeselectonV_salaryto杨兰drop V_salary实验中出现的问题以及解决方案(1) 第一题,在约束出生的年份的时候,只有或的关系,并没有与之对应=1986-1-1所以只能先创建了一个或关系。解决方法:之后,发现代码中出现了OR的名词,所以把这个改为了AND,之后图形界面操作自动更正为了有两个sbirth选项,之后意识到这样就可以表示与的关系了。(2) 创建用户的时候,必须要有与之对应的登录名。并且一个登录名只能对应一个用户。(3) 视图的操作太糟糕了,因为视图实际上只是一个虚表,不直接依赖于表中的数据,所以只能删除,不能添加(虽然添加数据的时候提示有一行受到了影响,但是等到删除的时候,却不提示此行被删除,而且视图上也不显示)。所以当不小心误删的时候,只能去重新创建视图。实验过程中的一些感受:本次实验中对数据库的视图有了了解,虽然不是太懂,但是可以针对视图进行授权,从而解决了很多的安全问题。但是对视图的数据操作不是一个明知的选择。同时发现图形操作和SQL代码结合起来可以对问题的解决提供很大的帮助。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1