问题一:为什么需要视图?
我个人认为最主要的两个作用是:
方便用户进行查询操作
因为当我们通过一个很复杂的查询语句去查询数据的时候,很麻烦,我们不喜欢每次都写这条查询语句,比如
SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept FROM SX,SY WHERE SX.Sno=SY.Sno;
上述查询语句很复杂,如果我们每次都写这条语句查询,要命啊,所以可以使用视图,如下
create view 视图名(比如test.v) as 查询语句(比如SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept FROM SX,SY WHERE SX.Sno=SY.Sno)
以后则直接输入select * from 视图名;即可,方便。
为安全性考虑
有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。这样视图机制就自动提供了对机密数据的安全保护功能。例如,Student表涉及全校15个院系学生数据,可以在其上定义15个视图,每个视图只包含一个院系的学生数据,并只允许每个院系的主任查询和修改本原系学生视图。
视图是产看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些sql语句的集合。从安全的角度来说,视图可以不给用户接触数据表,从而不知道表结构。
问题二:什么是视图?
视图是已经编译好的sql语句;视图号称虚拟表;
问题三:为什么视图号称虚拟表?
因为视图可以建立一个虚拟表,比如有两个表SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept),通过上述两个真实表构造一个虚拟表:学生关系Student(Sno,Sname,Ssex,Sage,Sdept),可以如下操作:
如果建立一个视图Student:
CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)
AS
SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept
FROM SX,SY
WHERE SX.Sno=SY.Sno;
表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。