1. 视图
(0) 简介
- 一种虚拟的表
- 和普通的表一样的使用
- 通过真实的表动态生成的数据
- 只保存SQL逻辑,不保存查询结果
应用场景:
- 多个地方用到同样的查询结果
- 需要的结果查询语句较为复杂
(1) 视图创建和使用
# 创建一个视图
create view 视图名
as
查询语句;
# 使用一个视图
select *
from 视图名
where ...
# 一个视图可以包含另一个视图
(2) 视图修改
create or replace view 视图名
as
查询语句;
alter view 视图名
as
查询语句;
(3) 视图删除
drop view 视图名1, 视图名2...;
(4) 查看视图结构
desc 视图名
show create view 视图;
(5) 视图的数据更新
更新操作将同步到原始表
create view v1
as
select last_name,email
from employees;
# 插入数据
insert into v1 values("zhangfei","zf@qq.com");
# 修改
update v1
set last_name = 'zhangfeifei'
where last_name = 'zhangfei';
# 删除
delete
from v1
where last_name = 'zhangfei';
不允许更新的
包含以下关键字的sql语句:分组函数、distinct, group by、 having、 union或者union all
常量视图
Select中包含子查询
join
from一个不能更新的视图
where子句的子查询引用了from子句中的表