简介
视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询 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; |