MySQL视图

什么是MySQL视图

视图:视图是一张虚拟表,存在表结构,但是没有数据。

视图关键字

视图关键字:view

视图作用

  1. 节省查询语句的长度
  2. 对外提供访问接口
    保证数据表(基表)的数据安全性。
    视图能够选择性的从基表获取数据,并提供给外部。
  3. 对外友好性
    视图能够对外提供不同的数据信息。(不同的接口定义不同的视图)

创建视图

语法:(把后面的数据源起了个名字叫视图)
create view 视图名字 as select语句;

首先新增几条数据
在这里插入图片描述
我这里使用该表其中三个字段建了一个虚拟表
在这里插入图片描述
视图创建之后发生了什么?

  1. 创建视图结构(虚拟表)
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190303195649503.png
  2. 在数据库对应的文件夹下创建结构文件
    在这里插入图片描述
    视图是虚拟表,只有结构,没有数据。

视图查看

  1. 视图可以像表一样的查看
    show tables/show create table/desc 视图名
    在这里插入图片描述
  2. 可以通过视图查看创建语句的方法
    show create view 视图名;
    在这里插入图片描述
  3. 查看视图数据:与查看表完全一致
    在这里插入图片描述
    视图不保存数据:数据的来源指的是当视图被调用的时候,系统会自动调用视图的创建语句中的select语句去执行。(子查询)

修改视图

视图修改的本质是修改视图的数据来源。

语法: alter view 视图名字 as select语句;

下面可以看到 我对数据源进行修改,虚拟表获取了student3的所有数据,把c_id也获取到了.
在这里插入图片描述

删除视图

语法: drop view 视图名字;

在这里插入图片描述

视图数据增删改

视图可以为基表进行数据的增删改操作,必须满足以下条件

  • 视图新增数据
  1. 视图的数据来源(基表)只能有一个
    在这里插入图片描述
    多表视图不能插入数据
    在这里插入图片描述
  2. 视图中的所有字段,必须包含了基表中不为空或者没有默认值的全部字段。
    在这里插入图片描述
  • 更新数据:基本没有限制(因更新时有where子句)
    单表视图更新
    在这里插入图片描述
    多表视图更新
    在这里插入图片描述
    删除数据:与插入数据条件一致,只有单表视图可以删除,多表不能删除

单表视图删除
在这里插入图片描述
多表视图删除
在这里插入图片描述

视图算法

视图在执行的过程中(视图被查询),到底是如何去执行视图对应的查询语句。

视图算法分为三种:

  • 合并:merge,先将视图的SQL查询与与外部的查询语句进行语法合并
  • 临时表:temptable,先执行视图里面的查询语句,结果变成一个临时表
  • 未定义:undefined,系统自己判断到底使用合并还是临时表,默认的

在这里插入图片描述

	算法指定语法: create algorithm = 算法 view 视图名字 as select语句

在这里插入图片描述

结束语

如果您对这篇博文有什么意见或者建议,请评论与我讨论。
如果您觉得还不错的话~可以点个赞鼓励我哦。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值