视图不真正存在数据,只是把定义存于数据字典,在对视图进行查询时,才按视图的定义从基本表中将数据查出。若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了码,则称这个视图为行列子集视图。
在DBMS中,视图的作用如下:
- 简化用户的操作
- 使用户能从多种角度看待同一数据
- 对重构数据库提供了一定程度的逻辑独立性
- 能够对机密数据提供安全保护
1、定义视图
建立视图的命令格式如下:
CREATE VIEW<视图名>[(<列名>[,<列名>]...)]
AS
子查询
[With Check Option]
其中With Check Option表示对视图进行Update,Insert和Delete操作时,要保证更新、插入或删除的行满足视图定义中的谓词条件。
- 建立信息系学生的视图
CREAT VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
With Check Option;
2、删除视图
删除视图的命令格式为:
DROP <视图名>
- 要删除视图IS_Student
DROP IS_Student;
3、查询视图
因为视图没有真实数据,所以,对视图的查询要转换为对相应表的查询,这个过程叫做视图消解,视图消解过程由DBMS自动完成。
- 在信息系学生的视图中找出年龄小于20岁的学生
SELECT Sno,Sage
FROM IS_Student
WHERE Sage<20;
以上语句等价于:
SELECT Sno,Sage
FROM Student
WHERE Sage<20 And Sdept='IS';
4、更新视图
更新视图就是对相应的表的更新。
- 将信息系学生视图IS_Student中学号为95002的学生姓名改为“刘辰”
UPDATE IS_Student
SET Sname='刘辰'
WHERE Sno='95002';
以上语句等价于:
UPDATE Student
SET Sname='刘辰'
WHERE Sno='95002' And Sdept='IS';