鏁版嵁搴撶涓绔犲疄楠屾姤鍛?- 鐧惧害鏂囧簱 联系客服

发布时间 : 星期六 文章鏁版嵁搴撶涓绔犲疄楠屾姤鍛?- 鐧惧害鏂囧簱更新完毕开始阅读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