表中存放的是实际的数据,而视图中存放的是 SQL 查询语句
当我们使用视图时,会运行视图里的 SQL 查询语句创建出一张临时表,当客户端与数据库之间的连接断开后,临时表会被自动删除
优势
简单
使用视图的用户完全不需要关心后面对应的表的结构、关联条件、和筛选条件
安全
使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,而通过视图可以轻松实现
独立
一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,可通过修改视图来解决,不会对访问者造成影响
操作
创建
创建视图需要有 CREATE VIEW 的权限,并且对于查询涉及到的列有 SELECT 权限;如果使用 CREATE OR REPLACE,那么哈需要有该视图的 DROP 权限
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
修改
ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED|LOCAL] CHEDK OPTION];
删除
DROP VIEW [IF EXISTS] view_name [,view_name...] [RESTRICT|CASCADE];
查看
MySQL v5.1 开始,使用SHOW TABLES
命令显示表名的同时也会显示视图的名字,不存在单独显示视图的SHOW VIEW
命令