表中存放的是实际的数据,而视图中存放的是 SQL 查询语句

当我们使用视图时,会运行视图里的 SQL 查询语句创建出一张临时表,当客户端与数据库之间的连接断开后,临时表会被自动删除

优势

简单

使用视图的用户完全不需要关心后面对应的表的结构、关联条件、和筛选条件

安全

使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,而通过视图可以轻松实现

独立

一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,可通过修改视图来解决,不会对访问者造成影响

操作

视图的操作跟 MySQL 一样,包括增、删、改、查

创建

创建视图需要有 CREATE VIEW 的权限,并且对于查询涉及到的列有 SELECT 权限;如果使用 CREATE OR REPLACE,那么哈需要有该视图的 DROP 权限

1
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 

修改

1
ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED|LOCAL] CHEDK OPTION];

删除

1
DROP VIEW [IF EXISTS] view_name [,view_name...] [RESTRICT|CASCADE];

查看

MySQL v5.1 开始,使用SHOW TABLES命令显示表名的同时也会显示视图的名字,不存在单独显示视图的SHOW VIEW命令