--什么是视图
- 视图是存放数据的一个接口,也可以说是一个虚表;
- 视图本身不存放数据,它的数据来源于1个或几个基表(视图),或者来自用户自己定义的数据;
- 当基表的数据发生变化,视图数据也随之变化。反之,当视图数据发生变化,基表数据也变化。
--视图的作用
- 视图可以让查询变得很清楚,使复杂的SQL语句变得很简单(尤其对于多表而言)。
- 保护数据库的重要数据,给不同的人看不同的数据。
- 如果表变化,可以屏蔽表结构变化对用户的影响。
--创建视图
- 语法
- CREATE [OR REPLACE] [ALGORITHM={MERGE|TEMPTABLE|UNDEFINED}] VIEW 视图名 [(列名)]
- AS SELECT语句 [WITH [CASCADED|LOCAL]] CHECK OPTION];
可以通过SHOW TABLES查看视图;通过DESC 视图名 看视图的结构。
对于中间有空格的列名,可以用`(1左边的字符)括起来。
- 视图的类型(视图一般用默认)
- MERGE:将引用视图语句的文本和视图定义结合起来,使得视图定义的某一部分取代语句的对应部分。
- TEMPTALBE:临时表。
- UNDEFINED:默认的类型,功能和MERGE类似。
- CHECK OPTION
- WITH LOCAL CHECK OPTION 更新后的结果,也要满足本视图的条件。
- WITH CASCADED CHECK OPTION 更新后的结果除了要满足本视图的条件,还要满足他所继承的基视图的条件,才可以更新。
具体参见:
--视图的操作
视图的操作和表的操作一样,除了不能用子查询(视图使用子查询的方法是:使用子查询在视图基础上再创建一个视图)
--更改视图
- ALTER VIEW 视图名 AS SELECT语句;
--删除视图
- DROP VIEW 视图名;
--查询视图的创建语句
- show create view 视图名 \G;