河北工业大学数据库实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理及应用》
实验报告
题目:SQL语言(视图、数据控制、空值和空集的处理)
1.4视图
一实验目的
熟悉SQL语言支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和取消视图。
二实验内容
(1)定义常见的视图形式,包括:
·行列子集视图。
· WITH CHECK OPTION的视图。
·基于多个基表的视图。
·带表达式的视图。
·分组视图。
(2)通过实验考察WITH CHECK OPTION 这一语句在视图定义后
产生的影响,包括对修改操作、删除操作、插入操作的影响。
(3)讨论视图的数据更新情况,对子行列视图进行数据更新。
(4)使用DROP语句删除一个视图,由该视图导出的其它视图定义仍
在数据词典中,但已经不能使用,必须显式删除。同样原因,删除基表时,由该基表导出的所有视图定义都必须显式删除。
三实验题目
(1)定义选课信息和课程名称的视图VIEWC
create view VIEWc as
select CHOICES.cid,ame,sid,tid,score
from CHOICES,COURSES where CHOICES.cid=COURSES.cid
(2)定义学生姓名与选课信息的视图VIEWS
create view VIEWS as
select
STUDENTS.sname,CHOICES.cid,CHOICES.sid,CHOICES.tid,choices.
score
from CHOICES,STUDENTS where CHOICES.sid=STUDENTS.sid
(3)定义年级低于1998的学生视图S1(SID,SNAME,GRADE)
drop view s1
create view S1 as
select STUDENTS.sid ,sname,grade from STUDENTS
where grade>1998
(4)查询学生为”uxjof”的学生的选课信息
select*from VIEWS
where sname='uxjof'
(5)查询选修课程”UML”的学生的编号和成绩
select sid,score from VIEWC where cname='UML'
(6)向视图S1插入记录(”60000001,Lily,2001”)
insert into s1values('60000001','Lily',2001)
(7)定义包括更新和插入约束的视图S1,尝试向视图插入记录
(“60000001,Lily,1997”),删除所有年级为1999的学生记录,讨论更新和插入带来的影响。
drop view s1
create view S1as
select STUDENTS.sid,sname,grade from STUDENTS
where grade>1998
with check option
插入记录:
insert into s1
values('60000001','Lily',1997)
出现错误,原因是目标视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。
delete from s1where grade=1999
命令成功执行。
(8)在视图VIEWS中将姓名为“uxjof”的学生的选课成绩都加上5分
update VIEWS set score=score+5
where sname='uxjof'and score<95
(9)取消以上建立的所有视图
drop view VIEWC
drop view VIEWS
drop view S1
1.5数据控制
一实验目的
熟悉SQL的数据控制功能,能够使用SQL语句来向用户授予和收回权限。
二实验内容
(1)使用GRANT语句对用户授权,对单个用户和多个用户授权,或使用保留字PUBLIC对所有用户授权。对不同的操作对象包括数据库、视图、基本表等进行不同权限的授权。
(2)使用WITH GRANT OPTION子句授予用户传播该权限的权利。(3)在授权时发生循环授权,考察DBS能否发现这个错误。如果不
能,结合取消权限操作,查看DBS对循环授权的控制。
(4)使用REVOKE子句收回授权,取消授权的级联反应。
三实验题目
(1)授予所有用户对表STUDENTS的查询权限。
grant select on STUDENTS to public
(2)授予所有用户对表COURSES的查询和更新权限。
grant select,update on courses to public
(3)授予USER1对表TEACHERS的查询,更新工资的权限,且允许
USER1可以传播这些权限。
grant select,update(salary)on teachers to USER1
with grant option
(4)授予USER2对表CHOICES的查询,更新成绩的权限。
grant select,update(score)on choices to USER2
(5)授予USER2对表TEACHERS的除了工资之外的所有信息的查询。
create view TV as
select tid,tname,email from TEACHERS
grant select on TV to USER2
(6)由USER1授予USER2对表TEACHERS的查询权限,和传播此项权限的权利。
以USER1的身份登录数据库
grant select on teachers to user2with grant option (7)由USER2授予USER3对表TEACHERS的查询权限,和传播此项权限的权利。再由USER3授予USER2上述权限,这样的SQL语
句能否得到执行?