虚拟表(视图)VIEW
- 虚拟表实际是视图VIEW,是一面镜像,本身不包含数据。源数据发生改变,镜像也发生改变。
- 创建视图关键字:CREATE VIEW
- 创建结构:用AS类似复制表,但是这里是用AS做一个透视,将这个表透视过来。
CREATE VIEW 视图名 AS 目标二维表; - 删除视图:DROP VIEW 视图名;
注:
(1)目标二维表就是用Where筛选出来的,目标二维表长什么样,视图就是什么样子。
(2)视图可以嵌套,层层嵌套
(3)部分DBMS中,在VIEW里使用ORDER BY无意义,还有部分DBMS禁止这项操作。
(4)所有select相关操作可以用在VIEW上,对视图进行
(5)有限制的更新数据,但不建议,有些DBMS也是禁止的。基本上认为视图只可以查看,不可以更新。
Q:为什么要设置“视图”的操作?
A:优势
(1)简化代码。i.方便语句重用;ii.实现数据过滤;iii.隐藏复杂语句,如联结。
(比如将某个过滤条件写成一个视图VIEW,那么以后没用到这个过滤条件时,就直接用视图而不是某一大段代码;联结的语句很复杂,每次使用都要重新联结,但是建成视图之后就可以,永久的联结)
(2)自定义需求。i.保存计算字段;ii.更改数据形式;iii.拼接字段、起别名。
(3)安全可靠。i.给与用户授予表的指定部分的访问权限;ii.不占物理空间。
例,创建一个与目标二维表一模一样的视图
CREATE VIEW pet_show
AS
SELECT * FROM pet;
#查看虚拟表pet_show
SELECT * FROM pet_show;
对此时的虚拟表视图进行select相关操作
SELECT ps.name, ps.species