本文已参与【新人创作礼】活动,一起开启掘金创作之路。
目录
用到的表的关系图
编辑
一、什么是视图
ySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。
表和视图的对比
| 创建语法的关键字 | 是否实际占用物理空间 | 使用 | |
| 视图 | create view | 只是保存了sql逻辑 | 增删改查,只是一般不能增删改 |
| 表 | create table | 保存了数据 | 增删改查 |
二、语法
1、创建视图
create view 视图名
as
查询语句
2、视图的修改
如果不存在该视图名,则创建该视图
create or replace view 视图名
as
查询语句;
如果不存在该视图名,则修改失败
alter view 视图名
as
查询语句;
3、删除视图
drop view 视图名,视图名,...;
4、查看视图
show create view 视图名;
5、视图的更新
插入
insert into 视图名(列名) values(值1);
修改
update 视图名 set 列=值 where 筛选条件;
删除
delete from 视图名 where 筛选条件;
具备以下特点的视图不允许更新
- 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
- 常量视图
- Select中包含子查询
- join
- from一个不能更新的视图
- where子句的子查询引用了from子句中的表
三、案例说明
1、查询热巴的男朋友姓名(原方法)
SELECT b.`name`, bo.boyName FROM boys bo INNER JOIN beauty b ON b.boyfriend_id = bo.id WHERE b.`name` = '热巴'
使用视图后
CREATE VIEW v1 AS SELECT b.`name`,bo.boyName FROM boys bo INNER JOIN beauty b ON b.boyfriend_id = bo.id
编辑
SELECT * FROM v1 WHERE NAME = '热巴'
\