发布时间 : 星期六 文章鏁版嵁搴撶涓绔犲疄楠屾姤鍛?- 鐧惧害鏂囧簱更新完毕开始阅读977a09c30b4e767f5bcfce09
WHEREsidNOTIN
(SELECTDISTINCTsid FROMCHOICES);
DELETE FROMCHOICES WHEREscore<60;
(10)
9
软件131-么红帅-132935
实验1.4视图
一、实验目的
熟悉SQL支持的有关视图的操作,能够熟练地使用SQL语句来创建需要的视图,对视图进行查询和取消视图。 二、实验内容
(1)定义选课信息和课程名称的视图VIEWC;
CREATEVIEWVIEWC AS
SELECTCHOICES.no,CHOICES.sid,CHOICES.tid,CHOICES.score,COURSES.cname
FROMCHOICES,COURSES
WHERECHOICES.cid=COURSES.cid;
2001”);
INSERT INTOS1
VALUES ('60000001','Lily',2001);
(7)定义包括更新和插入约束的视图S1,
尝试向视图插入记录“(60000001,Lily,1997”),删除所有年级为1999的学生记录,讨论更新和插入约束带来的影响。
定义视图:
CREATEVIEWS1(sid,sname,grade) AS
SELECTsid,sname,grade FROMSTUDENTS WHEREgrade>1998 WITHCHECKOPTION;
(2)定义学生姓名与选课信息的视图VIEWS;
CREATEVIEWVIEWS AS
SELECTSTUDENTS.sname,CHOICES.no,CHOICES.tid,CHOICES.cid,CHOICES.score
FROMSTUDENTS,CHOICES
WHERESTUDENTS.sid=CHOICES.sid;
插入元组:
INSERT INTOS1
VALUES('60000001','Lily',1997);
(3)定义年级低于1998的学生的视图S1(SID,SNAME,GRADE);
CREATEVIEWS1(sid,sname,grade) AS
SELECTsid,sname,grade FROMSTUDENTS WHEREgrade>1998;
(4)查询学生为“uxjof”的学生的选课信息;
SELECT* FROMVIEWS
WHEREsname='uxjof';
(5)查询选修课程“UML”的学生的编号和成绩;
SELECTsid,score FROMVIEWC
WHEREcname='UML';
执行结果:
消息550,级别16,状态1,第1 行 试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。 语句已终止。 结果分析:
WITH CHECK OPTION表示对视图进行操作时要满足子查询的条件表达式,grade=1997本题的条件grade>1998不符,因此在本题中插入这个元组是不成功的。 删除元组:
DELETE FROMS1
WHEREgrade=1999;
10
(6)向视图S1插入记录“(60000001,Lily,
软件131-么红帅-132935
执行结果: 删除成功
(8)在视图VIEWS中将姓名为“uxjof”的学生的选课成绩都加上5分。
UPDATEVIEWS SETscore=score+5
WHEREsname='uxjof';
(9)取消以上建立的所有视图。
DROPVIEWVIEWC DROPVIEWVIEWS DROPVIEWS1;
11
软件131-么红帅-132935
实验1.5数据控制
一、实验目的
熟悉SQL的数据控制功能,能够使用SQL语句来向用户授予和收回权限。 二、实验内容
(1)授予所有用户对表STUDENTS的查询权限。
GRANTSELECT ONSTUDENTS TOPUBLIC;
的查询权限和传播的此项权限的权利。
GRANTSELECT ONTEACHERS TOUSER2
WITHGRANTOPTION;
(2)授予所有用户对表COURSES的查询
和更新权限。
GRANTSELECT,UPDATE ONCOURSES TOPUBLIC;
(7)由USER2授予USER3对表TEACHERS
的查询权限,和传播的此项权限的权利。再由USER3授予USER2上述权限,这样的SQL语句能否成功得到执行?
GRANTSELECT ONTEACHERS TOUSER3
WITHGRANTOPTION;
(3)授予USER1对表TEACHERS的查询,
更新工资的权限,且允许USER1可以传播这些权限。
GRANTSELECT,UPDATE(salary) ONTEACHERS TOUSER1
WITHGRANTOPTION;
GRANTSELECT ONTEACHERS TOUSER2
WITHGRANTOPTION;
(4)授予USER2对表CHOICES的查询,更新成绩的权限。
GRANTSELECT,UPDATE(score) ONCHOICES TOUSER2;
(8)取消USER1对表STUDENTS的查询权
限,考虑由USER2的身份对表STUDENTS进行查询,操作能否成功?为什么?
REVOKESELECT ONTEACHERS
FROMUESR1 CASCADE;
(5)授予USER2对表TEACHERS的除了工资之外的所有信息的查询。
CREATEVIEWTV AS
SELECTtid,tname,email FROMTEACHERS; GRANTSELECT ONTV TOUESR2;
操作不成功,取消授权操作的时候存在级联效应。
(9)取消USER1和USER2的关于表COURSES的权限。
REVOKESELECT,UPDATE ONCOURSES FROMUESR1,UESR2;
(6)由USER1授予USER2对表TEACHERS
12