河北工业大学数据库实验报告 下载本文

《数据库原理及应用》

实验报告

题目: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 -