什么是MySQL视图
视图:视图是一张虚拟表,存在表结构,但是没有数据。
视图关键字
视图关键字:view
视图作用
- 节省查询语句的长度
- 对外提供访问接口
保证数据表(基表)的数据安全性。
视图能够选择性的从基表获取数据,并提供给外部。 - 对外友好性
视图能够对外提供不同的数据信息。(不同的接口定义不同的视图)
创建视图
语法:(把后面的数据源起了个名字叫视图)
create view 视图名字 as select语句;
首先新增几条数据
我这里使用该表其中三个字段建了一个虚拟表
视图创建之后发生了什么?
- 创建视图结构(虚拟表)
- 在数据库对应的文件夹下创建结构文件
视图是虚拟表,只有结构,没有数据。
视图查看
- 视图可以像表一样的查看
show tables/show create table/desc 视图名
- 可以通过视图查看创建语句的方法
show create view 视图名;
- 查看视图数据:与查看表完全一致
视图不保存数据:数据的来源指的是当视图被调用的时候,系统会自动调用视图的创建语句中的select语句去执行。(子查询)
修改视图
视图修改的本质是修改视图的数据来源。
语法: alter view 视图名字 as select语句;
下面可以看到 我对数据源进行修改,虚拟表获取了student3的所有数据,把c_id也获取到了.
删除视图
语法: drop view 视图名字;
视图数据增删改
视图可以为基表进行数据的增删改操作,必须满足以下条件
- 视图新增数据
- 视图的数据来源(基表)只能有一个
多表视图不能插入数据
- 视图中的所有字段,必须包含了基表中不为空或者没有默认值的全部字段。
- 更新数据:基本没有限制(因更新时有where子句)
单表视图更新
多表视图更新
删除数据:与插入数据条件一致,只有单表视图可以删除,多表不能删除
单表视图删除
多表视图删除
视图算法
视图在执行的过程中(视图被查询),到底是如何去执行视图对应的查询语句。
视图算法分为三种:
- 合并:merge,先将视图的SQL查询与与外部的查询语句进行语法合并
- 临时表:temptable,先执行视图里面的查询语句,结果变成一个临时表
- 未定义:undefined,系统自己判断到底使用合并还是临时表,默认的
算法指定语法: create algorithm = 算法 view 视图名字 as select语句
结束语
如果您对这篇博文有什么意见或者建议,请评论与我讨论。
如果您觉得还不错的话~可以点个赞鼓励我哦。