神马文学网
5-5-3
来源:百度文库 编辑:
神马文学网
时间:2024/05/13 17:35:05
5.5.1 什么是视图
1.外模式一级数据结构的基本单位是视图(view)
2.定制的虚拟表
3.从一个或几个基本表(或视图)导出的表
4.视图可以更新
5.用户的外视图由基本表和视图组成
6.只保存视图的定义,不存放视图的数据
7.以多种角度观察数据库中的数据
8.通过视图这样的窗口,看到数据库中用户感兴趣的数据
5.5.2 视图的创建
1.句法
CREATE VIEW <视图名> (<列表序列>) AS
2.创建一个有关计算机系学生情况的视图Student_CS
CREATE VIEW Student_CS AS
SELECT Sno,Sn,Age,Sex
FROM Student
WHERE Dept='CS'
3.创建一个有关学生成绩情况的视图S_SC_C
CREATE SQL VIEW S_SC_C AS
SELECT Sn,Cn,Grade
FROM Student,Course,Sc
WHERE Student.Sno=Sc.Sno AND Sc.Cno=Course.Cno
4.创建一个有关学生平均成绩的视图AVGG
CREATE SQL VIEW AVGG AS
SELECT Sno,AVG(G)
FROM Sc
GROUP BY Sno
5.视图中的虚字段
Create SQL view student2 as
SELECT sno Number,sn Name,2004-age Birthday
FROM student
5.5.3 视图的撤销
1.句法
DROP VIEW <视图名>
2.例句
DROP VIEW Student2
5.5.4 视图的操作
1.说明
①在视图定义以后,对于视图的查询(SELECT)操作,与基本表一样
②为简单起见,一般只对“行列子集视图”才能更新
如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。允许用户更新的视图在定义时必须加上“WITH CHECK OPTION”短语
据上述定义可知,定义在多个基本表上的视图,或者使用聚合操作的视图,或者不包含基本表主键的视图都是不允许更新的
2.查找视图S_SC_C中不及格的成绩
①SELECT * FROM S_SC_C WHERE Grade <60
②实际操作:
SELECT *
FROM Student,Course,Sc
WHERE Student.Sno=Sc.Sno AND Sc.Cno=Course.Cno AND Grade<60
3.如果定义了一个有关男学生的视图
CREATE VIEW Student_MALE AS
SELECT Sno,Sname,Age
FROM Student
WHERE Sex ='M'
视图从单个关系只使用选择和投影导出,且包含主键Sno,是行列子集视图,可更新
执行插入操作:
INSERT INTO Student_MALE VALUES ('S28','WU',18)
系统自动会把它转变成下列语句:
INSERT INTO Student VALUES ('S28', 'WU',18, 'M')