MySQL视图

98 阅读2分钟

本文已参与【新人创作礼】活动,一起开启掘金创作之路。 ​

目录

一、什么是视图

表和视图的对比

二、语法

1、创建视图

2、视图的修改

3、删除视图 

4、查看视图 

5、视图的更新 

三、案例说明


用到的表的关系图

​编辑

一、什么是视图

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 = '热巴'

\