关系数据库 第三瓣
视图
我们常把用CREATE TABLE创建的表叫做基本表。基本表的数据实际上是存储在磁盘上的。
视图是由从数据库中的基本表中选取出来的数据组成的逻辑窗口,与基本表不同的是,视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基本表中。基本表中的数据发生变化,视图查询出来的数据也随之变化。
1.定义视图
CREATE VIEW 视图名 [(视图列名表)] AS 子查询列表
单源表视图
CREATE VIEW IS_Student
AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept='信息系'
CREATE VIEW时,SELECT语句并不执行,只有在对视图执行查询时,才按视图的定义从相应的基本表中查询数据。
多源表视图
CREATE VIEW V_IS
AS SELECT Student.Sno, Sname, Sage FROM Student JOIN SC ON Student.Sno=SC.Sno
WHERE Sdept='信息系' AND SC.Cno='C01'
已有视图上建立视图
CREATE V_IS
AS SELECT Sno, Sname, Sage FROM V_IS WHERE Grade>=90
定义带表达式的视图(定义基本表时,为减少数据库的冗余数据,表中只存放基本数据,各种计算派生出来的数据一般是不存储在基本表中的)
CREATE VIEW BT_S (Sno, Sname, Birth)
AS SELECT Sno, Sname, 2013-Sage FROM Student;
含分组统计信息的视图
CREATE VIEW S_G (Sno, AverageGrade)
AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno
注:在子查询的选择列表包含表达式或者统计信息,而在子查询中也没有为这样的列指定类标题时,必须指定视图属性列的名字。
2. 删除视图
DROP VIEW 视图名
DROP VIEW S_G;
3.视图的作用
1.简化数据查询语句
定义视图可以将表与表之间的复杂的连接操作和搜索条件对用户隐藏起来,用户只需要简单地查询一个视图即可。当多次执行相同相同的数据查询操作时使用视图尤为有用。
2.使用户从多角度看待同一数据
3.提高了数据的安全性