简介
视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询 SQL
。一般情况下,应该将视图用于检索(SELETE
),而不用于更新(INSRTE
、UPDATE
、DELETE
)。
视图具有表结构文件,但不存在数据文件。
优点
- 简化,隐藏复杂的
SQL
,简化复杂SQL
的数据处理,还可以重新格式化数据 - 安全,保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
缺点
- 性能相对较差
性能问题:因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任何一个检索。如果你用多个联结和过滤创建了复杂的视图或者嵌套了视图,就会发现性能下降得很厉害,主要原因是不能建立索引。
权限
CREATE VIEW
:创建视图SHOW VIEW
:查看视图
操作
创建视图
1 | CREATE [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] |
MySQL 有三种视图策略, 分别是 MERGE
, TEMPTABLE
, UNDEFINED
MERGE
,先将输入的查询语句和视图的声明语句进行合并,然后执行合并后的语句并返回。TEMPTABLE
,先基于视图的声明创建一张temporary table
,当输入查询语句时会直接查询这张temporary table
,TEMPTABLE
的效率要比MERGE
低。UNDEFINED
,如果创建视图的时候不指定策略,默认使用此策略。UNDEFINED
会自动选择使用上述两种策略中的一个,优先选择MERGE
策略,无法使用则转为TEMPTABLE
策略。
显示视图
1 | # 查询单个视图 |
删除视图
1 | drop view view_name; |