《数据库原理及应用》
实验报告
题目:SQL语言(视图、数据控制、
空值和空集的处理)
1.4视图
一 实验目的
熟悉SQL语言支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和取消视图。
二 实验内容
(1)
定义常见的视图形式,包括:
· 行列子集视图。
· WITH CHECK OPTION的视图。 · 基于多个基表的视图。 · 带表达式的视图。 · 分组视图。 (2)
通过实验考察WITH CHECK OPTION 这一语句在视图定义后
产生的影响,包括对修改操作、删除操作、插入操作的影响。 (3) (4)
讨论视图的数据更新情况,对子行列视图进行数据更新。 使用DROP语句删除一个视图,由该视图导出的其它视图定义仍
在数据词典中,但已经不能使用,必须显式删除。同样原因,删除基表时,由该基表导出的所有视图定义都必须显式删除。
- 1 -
三 实验题目
(1) 定义选课信息和课程名称的视图VIEWC
create view VIEWc as
select CHOICES.cid,courses.cname,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 s1 values('60000001','Lily',2001)
(7) 定义包括更新和插入约束的视图S1,尝试向视图插入记录(“60000001,Lily,1997”),删除所有年级为1999的学生记录,讨论更新和插入带来的影响。
drop view s1
create view S1 as
select STUDENTS.sid ,sname,grade from STUDENTS where grade>1998 with check option
- 2 -