MySQL视图
2021-02-14 本文已影响0人
墨线宝
MySQL视图
视图的概念
视图是一种虚拟存在的表,行和列的数据来自于定义的视图的查询中使用的表,并且是在使用视图中动态生成的,只保存sql逻辑,不保存数据
应用场景
- 多个地方使用同样的查询结果
- 该查询结果使用的sql语句较为复杂
视图
创建视图
#语法结构
create view 视图名
as 查询语句
create view my_view as select s.name as student_name,c.name as class_name from student s join class c on s.classid = c.id;
#查看视图 此时视图里只有两个字段
desc my_view;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| student_name | varchar(20) | NO | | NULL | |
| class_name | varchar(20) | NO | | NULL | |
+--------------+-------------+------+-----+---------+-------+
使用视图查询
#注意:查询时只可以使用视图中的字段进行查询
select * from my_view where student_name = '张三';
修改视图
有两种方式修改视图
方式一:有则修改,没有则创建
create or replace view 视图名
as 查询语句
方式二:
alter view 视图名 as 查询语句
删除视图
drop view 视图名,视图名,...
视图中数据更新
在使用简单地查询语句作为视图时,可以对视图进行增删改操作,而且对视图的操作也会同样使数据表完成相应的变化
但是包含以下特点的视图不允许更新
- 分组函数、distinct、group by、having、union、union all
- 常量视图
- select中包含子查询
- join语句(可以update但是不可以insert和delete)
- 数据来自于一个不可更新的视图
- Where 子句的子查询引用了from子句中的表
由于本身的博客百度没有收录,博客地址http://zhhll.icu