一. 什么是视图
视图是一种虚拟存在的表, 行和列数据来自, 定义视图的查询中使用的表, 并且是在使用视图时动态生成的. 优势有:
简单: 使用视图的用户完全不需要关心后面对应的表的结构, 关联条件, 筛选条件.
安全: 使用视图的用户只能访问他们被允许查询的结果集.
数据独立: 源表增加列对视图没有影响, 源表修改列名, 则通过修改视图 对应好源表的列名来解决, 不会造成对访问者的影响.
1.1 创建视图的操作
-- 创建视图
- CREATE OR REPLACE VIEW view_city
- AS
- SELECT * FROM city;
-- 查询视图
SELECT * FROM view_city;
1.2 修改视图
-- 修改视图
- ALTER VIEW view_city
- AS
- SELECT cityname FROM city;
1.3 限制
视图一般只是用来做查询使用, 如果要对视图做修改有如下限制不能更新:
包含关键字 聚合函数 (sum,min,max,count 等),distinct,group by , having,union ,union all.
常量视图.
select 中包含子查询.
jion.
from 一个不能更新的视图.
where 字句的子查询引用了 from 字句的表.
LOCAL 是只要满足本视图的条件就可以更新, CASCADED 则是必须满足所有针对该视图的所有视图的条件才可以更新, 如果没有明确是 LOCAL 还是 CASCADED, 则默认是 CASCADED, 由于视图基本不做修改, 这里就不在演示.
-- local 与 CASCADED 语法
- CREATE OR REPLACE VIEW view_city
- AS
- SELECT * FROM city;
- -- with(local | CASCADED) CHECK OPTION;
1.4 删除视图
drop view view_city;
1.5 查看视图
-- 查看视图的定义
SHOW CREATE VIEW view_city
-- 查看视图的定义
SELECT * FROM information_schema.views WHERE table_name = 'view_city'
来源: http://www.linuxidc.com/Linux/2018-09/154348.htm