MySQL视图
图
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据,作为一个select语句保存在数据字典中的,通过视图,可以展现基表(用来创建视图的表)的部分数据,视图数据来自定义视图的查询中使用的表,使用视图动态生成

视图

一次复杂的数据在查询时需要关联多表得出结果,视图的作用就是将这些数据预先生成为一张虚拟的表,便于直接查询

查看视图

show create view view_name;

创建视图

create view view_name as
select xx,xx
from xx,xx
where xx

删除视图

drop view view_name;

更新视图

可以先删除再创建,也可以使用create or replace view

检查选项

对于视图的操作可以进行插入、修改、删除的,但是对于创建的视图有条件,通过视图插入的数据可能并不能查询到,对于这种情况可以对视图设置检查,防止这种数据的操作

create view view_name as
select xx,xx
from xx,xx
where xx
width local check option

对于视图的数据操作,会对其进行检查,防止出现违背创建视图语句的数据,保证视图数据的一致性

视图的更新

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系,以下情况视图将不可更新:

  • 聚合函数或窗口函数(SUM()、MIN()、MAX()、COUNT()等)
  • DISTINCT
  • GROUP BY
  • HAVING
  • UNION或UNION ALL

视图的作用

  • 简化SQL查询,不用每次都写复杂的SQL语句
  • 安全,数据库的授权并不能授权到数据库特定行和特定的列,通过视图可以
  • 数据独立,视图可帮助用户屏蔽真实表结构变化带来的影响