视图
视图是虚拟存在的表,不实际存在,是再使用视图时动态生成的
- 简单
- 安全
- 数据独立
视图操作
视图操作需要有对应权限
创建视图或修改
create or replace view view_name as
select_statement
[with[CASCADED|LOCAL]CHECK OPTION]
- with[CASCADED|LOCAL]CHECK OPTION 决定是否允许更新数据
- LOCAL表示只要满足本视图的条件就可以更新
- CASCADED必须满足所有针对该视图的所有视图的条件才可以更新
- 默认是CASCADED
alter [algorithm={undefined|merge|tempable}]
view view_name[(column_list)]
as select_statement
[with[CASCADED|LOCAL]CHECK OPTION]
视图定义的限制
-
在FROM关键字后面不能包含子查询,这和其它数据库不同,需要注意
-
部分类型的视图不可更新
- 包含以下关键字的SQL语句:聚合函数、DISTINCT、GROUP BY、HAVING、UNION或UNION ALL
- 常量视图
create or replace view pi as select 3.14 as pi;
- SELECT中包含子查询
select or replace view sum_it as select (select city from city where city_id=1);
- JION
- FROM一个不能更新的视图
- WHERE子句的子查询引用了FROM字句中的表
删除视图
drop view [if exists] view_name[,view_name]… [RESTRICT|CASCADE]
查看视图
- 自版本5.1开始,
show tables
不仅显示表,还有视图的名字,版本之前使用show views
- 查询某个视图的定义
show create view view_name \G;
select * from views where tables_name= view_name \G;
select * from views where tables_name= view_name \G;