MySQL 视图
# 视图介绍
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。视图只保存了查询的 SQL 逻辑,不保存查询结果。
视图的数据是依赖原来表中的数据的,所以原来的表的数据发生了改变,那么显示的视图的数据也会跟着改变,例如向数据表中插入数据,那么在查看视图的时候,会发现视图中也被插入了同样的数据。视图实际上是由预定义的查询形式的表所组成的。
视图的优点:
- 简单:视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
- 安全:数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们所能见到的数据。
- 数据独立:视图可帮助用户屏蔽真实表结构变化带来的影响。
# 视图语法
# 创建视图
CREATE [OR REPLACE] VIEW VIEW_NAME[(COL_LIST)] AS SELECT_STATMENT [ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
1
如:
create view v_today(today) as select current_date;
create view v_student as select name, age from t_student;
1
2
3
2
3
# 查询视图
查看创建视图语句:
SHOW CREATE VIEW VIEW_NAME;
1
查看视图数据:
SELECT * FROM VIEW_NAME;
1
# 修改视图
CREATE [OR REPLACE] VIEW VIEW_NAME[(COL_LIST)] AS SELECT_STATMENT [ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
ALTER VIEW VIEW_NAME[(COL_LIST)] AS SELECT_STATMENT [ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
1
2
3
2
3
# 删除视图
DROP VIEW [IF EXISTS] view_name1 [,view_name2] ...;
1
# 视图更新
要更新视图中的数据,视图中的行必须与基表中的行之间存在一对一的关系,如果视图包含以下任何一项,则视图中的数据不可更新,否则报错。
- 聚合函数
- 窗口函数
- distinct
- group by
- having
- union
上次更新: 2023/11/01, 03:11:44