MySQL视图

原文连接http://zhhll.icu/2021/01/02/%E6%95%B0%E6%8D%AE%E5%BA%93/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E8%A7%86%E5%9B%BE/mysql

MySQL视图

视图的概念

视图是一种虚拟存在的表,行和列的数据来自于定义的视图的查询中使用的表,而且是在使用视图中动态生成的,只保存sql逻辑,不保存数据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 = '张三';

修改视图

有两种方式修改视图函数

方式一:有则修改,没有则建立code

create or replace view 视图名
as 查询语句

方式二:get

alter view 视图名 as 查询语句

删除视图

drop view 视图名,视图名,...

视图中数据更新

在使用简单地查询语句做为视图时,能够对视图进行增删改操做,并且对视图的操做也会一样使数据表完成相应的变化博客

可是包含如下特色的视图不容许更新io

  • 分组函数、distinct、group by、having、union、union all
  • 常量视图
  • select中包含子查询
  • join语句(能够update可是不能够insert和delete)
  • 数据来自于一个不可更新的视图
  • Where 子句的子查询引用了from子句中的表

因为自己的博客百度没有收录,博客地址http://zhhll.icuclass

相关文章
相关标签/搜索