实验三更新视图权限管理229274.docx
《实验三更新视图权限管理229274.docx》由会员分享,可在线阅读,更多相关《实验三更新视图权限管理229274.docx(15页珍藏版)》请在冰豆网上搜索。
![实验三更新视图权限管理229274.docx](https://file1.bdocx.com/fileroot1/2022-12/13/9a092992-fa21-47f4-b228-6abf7a086c49/9a092992-fa21-47f4-b228-6abf7a086c491.gif)
实验三更新视图权限管理229274
《数据库系统原理》实验三
数据更新、视图、权限管理
实验3.1数据更新
1实验内容
(1)使用INSERTINTO语句插入数据,包括插入一个元组或将子查询的结果插入到数据库中两种方式。
(2)使用SELECTINTO语句,产生一个新表并插入数据。
(3)使用UPDATE语句可以修改制定表中满足WHERE子句条件的元组,有三种修改的方式:
修改某个元组的值;修改多个元组的值;带子查询的修改语句。
(4)使用DELETE语句删除数据:
删除某一个元组的值;删除多个元组的值;带子查询的删除语句。
2实验步骤
在数据库School上按下列要求进行数据更新
可在SQL代码前加下面两句SQL语句,用于确保当前使用的是School数据库
UseSchool
go
(1)使用SQL语句向STUDENTS表中插入元组(编号:
12345678名字:
LiMingEMAIL:
LM@年级:
2002)。
insertintoSTUDENTS(sid,sname,email,grade)
values('12345678','LiMing','LM@',2002);
select*fromSTUDENTS;
(2)对每个课程,求学生的选课人数和学生的最高成绩,并把结果存入数据库。
使用SELECTINTO和INSERTINTO两种方法实现。
createtableSnumanMscore(
cidchar(10),
numint,
maxscoreint);
insertintoSnumanMscore(cid,num,maxscore)
selectcid,COUNT(*),MAX(score)fromCHOICESgroupbycid;
select*fromSnumanMscore;
selectcid,COUNT(*)asnum,MAX(score)asmaxscoreintoSnumandMscore2
fromCHOICESgroupbycid;
select*fromSnumandMscore2;
(3)在STUDENTS表中使用SQL语句将姓名为LiMing.的学生的EMAIL改为LM@。
updateSTUDENTSsetemail='LM@'
wheresname='LiMing';
select*fromSTUDENTS;
(4)在TEACHERS表中使用SQL语句将所有教师的工资翻倍。
updateTEACHERSsetsalary=salary*2;
select*fromTEACHERS;
(5)将姓名为waqcj的学生的课程C++的成绩加10分。
selectsidfromSTUDENTSwheresname='waqcj'
selectcidfromCOURSESwherecname='C++'
updateCHOICESsetscore=score+10
wheresidin(selectsidfromSTUDENTSwheresname='waqcj')
andcidin(selectcidfromCOURSESwherecname='C++');
select*fromCHOICESwheresid='800005753'andcid='10005’
(6)在STUDENTS表中使用SQL语句删除姓名为LiMing的学生信息。
deletefromSTUDENTSwheresname='Liming';
select*fromSTUDENTS;
(7)删除所有选修课程C的选课记录。
select*fromCHOICES
wherecidin(selectcidfromCOURSESwherecname='C');
deletefromCHOICES
wherecidin(selectcidfromCOURSESwherecname='C');
(8)对COURSES表做删去时间>80的元组的操作,讨论该删除操作所受到的约束。
deletefromCOURSES
wherehour>80;
select*fromCOURSES;
实验3.2视图操作
1实验内容
(1)使用CREATEVIEW命令建立视图。
(2)对视图进行查询
(3)更新视图
(4)使用DROPVIEW命令删除视图。
2实验步骤
在数据库School上按下列要求进行视图的有关操作
可在SQL代码前加下面两句SQL语句,用于确保当前使用的是School数据库
UseSchool
go
(1)建立薪水大于3000的教师的视图t_view,并要求进行修改和插入操作时仍需保证该视图只有薪水大于3000的教师信息。
useSchool
go
createviewt_view
as
select*fromTEACHERSwheresalary>3000
withcheckoption;
go
select*fromt_view;
(2)在视图t_view中查询邮件地址为xibl@izd.edu的教师的相关信息。
select*fromt_viewwhereemail='xibl@izd.edu';
(3)向视图t_view中插入一个新的教师记录,其中教师编号为199999998,姓名为abc,邮件地址为abc@,薪水为5000。
insertintot_view(tid,tname,email,salary)
values('199999998','abc','abc@',5000);
select*fromt_view;
(4)在视图t_view中将编号为200010493的教师的薪水改为6000。
updatet_viewsetsalary=6000
wheretid='200010493';
(5)删除视图t_view。
dropviewt_view;
实验3.3用户标识与鉴别
1实验内容
由系统提供一定的方式让用户标识自己的名字和身份。
2实验步骤
(1)在SSMS中,设置SQLServer的安全认证模式。
(2)在SSMS中建立一个名为“张三”的登陆用户、School数据库用户。
最后点击确定即可:
(3)在SSMS中取消“张三”这个用户。
点击登录名,找到张三,删除即可。
(4)学习【参考命令】中的几个命令,了解利用命令实现上述步骤。
A、建立一个名为“张三”的登陆用户、School数据库用户。
execsp_addlogin'张三','123456','School'
execsp_adduser'张三'
B、取消“张三”这个用户。
execsp_dropuser'张三'
execsp_droplogin'张三'
实验3.4自主存取控制
1实验内容
定义用户权限,将用户权限登记到数据字典中,并对用户进行合法权限检查。
2实验步骤
(1)在SSMS中建立一个名为“张三”的登陆用户、School数据库的用户。
参见实验3.3的试验步骤
(2)
execsp_addlogin'张三','123456','School'
execsp_adduser'张三'
(2)使用查询验证“张三”这个用户名是否具有对学生表的SELECT权限。
selectSYSTEM_USER
executeasUSER='张三'
selectSYSTEM_USER
select*fromSTUDENTS;
(3)将School数据库的操作权限赋予数据库用户张三。
revertselectSYSTEM_USER
grantallprivilegesonSTUDENTSto张三
grantallprivilegesonCHOICESto张三
grantallprivilegesonCOURSESto张三
grantallprivilegesonTEACHERSto张三
executeasUSER='张三'
selectSYSTEM_USER
select*fromSTUDENTS;
实验3.5视图机制在自主存取控制上的应用
1实验内容
在视图机制上定义用户权限,将用户权限登记到数据字典中,并对用户进行合法权限检查。
2实验步骤
(1)在数据库School上创建用户“张三”,具体操作参见实验3.3中的试验步骤
(2)。
execsp_addlogin'张三','123456','School'
execsp_adduser'张三'
(2)新建查询,用管理员身份登陆数据库。
在choices表上创建视图ch_view,并显示其内容(选课课程号为10005)。
printuser
createviewch_view
as
select*fromCHOICES
wherecid='10005';
go
select*fromch_view;
(3)在视图ch_view上给用户张三赋予INSERT的权限。
grantinsertonch_viewto张三
(4)将视图ch_view上score列的权限赋予用户张三。
grantallonch_view(score)to张三
executeasuser='张三'
printuser
selectscorefromch_view;
(5)以用户张三登陆查询分析器,对ch_view进行查询操作。
revertselectSYSTEM_USER
printuser
grantallonch_viewto张三
executeasuser='张三'
printuser
select*fromch_view
(6)以用户张三登陆查询分析器,对no为500127998的学生的成绩进行修改,改为90分。
selectscorefromch_viewwhereno=500127998
updatech_viewsetscore=90whereno=500127998
selectscorefromch_viewwhereno=500127998
(7)收回对用户张三对视图ch_view查询权限的授权
revertselectSYSTEM_USER
revokeselectonch_viewfrom张三
executeasuser='张三'
select*fromch_view
printuser
select*fromch_view
实验总结:
在此次实验中我巩固了更新数据库,建立视图的各种命令,还学习了权限管理,并对此有了一定的理解。
虽然在此过程中碰到了一些障碍,但最后都解决了。
我觉得自己在实验中学到了许多东西。