视图
虚拟表,数据来自定义视图的查询中使用的表,视图只保存sql逻辑,不保存查询结果。
应用场景
- 多个地方用到同样的查询结果
- 查询结果使用的sql语句较为复杂
优点
- 重用sql语句
- 简化复杂的sql操作,不必知道它的细节
- 保护数据,提高安全性
创建视图
Create view视图名
As
sql语句;
CREATE VIEW v2
AS
SELECT g.`name` 游戏名,a.`name` 作者名,a.sex 性别,a.age
FROM games g
INNER JOIN authorss a
ON g.author_id = a.id
WHERE age = 23;
使用视图
跟使用表一样
SELECT * from v2;
SELECT * from v2 WHERE 作者名 = '女';
修改视图
方式1 replace
create or replace view 视图名
As
查询语句;
CREATE or replace vIEW v2
AS
SELECT * FROM games;
方式2 alter
Alter view 视图名
As
查询语句;
ALTER VIEW v2
AS
SELECT * FROM authorss;
删除视图
Drop view 视图名,视图名。。。
drop VIEW v1,v2;
更新视图
增删改和表一致,但视图的更新有很多限制
不能更新的视图
- 包含分组函数,distinct,group by,having,union,union all
- 常量视图
- select中包含子查询
- Join
- from一个不能更新的视图
- where子句的子查询引用了from 子句中的表
视图和表的对比
创建语法的关键字 | 是否实际占用了物理空间 | 使用 | |
---|---|---|---|
视图 | create view | 只保存了sql逻辑 | 增删改查,一般只能查 |
表 | create table | 保存了数据 | 增删改查 |