mysql数据库视图_MySQL数据库8(二十)视图

视图

视图概念

视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能。

7f9910b0d4320873a77dc142ffffb637.png

视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。

视图基本操作

创建视图

视图的本质是SQL指令(select 语句)

基本语法:create[or repalce] view 视图名字 as select 指令 [with check option]; //可以是单表数据,也可以是连接查询,联合查询或者子查询

6fc90b8a3453fb176674335eba1942c4.png

表里面不能出现同名字段所以会显示重复。

查看视图:视图本身是虚拟表,所有关于表的一些操作都适合视图。

bc2b1e3ec6b4eb600f385495684d5d36.png

使用视图

视图是一张虚拟表,可以直接把视图当做“表”操作,但是视图本身没有数据,是临时执行select语句得到对应的结果。视图主要用于查询操作。

基本语法:select 字段列表 from 视图名字[各种子句];

4f547a2c15fabcaeafa40b122c69b96b.png

修改视图

修改视图:本质是修改视图对应的查询语句

基本语法:alter view 视图名字 as 新select指令;

a3cb608b08c38566dcae95f0400431cb.png

删除视图

基本语法:drop view 视图名字;

4598170edb9f6d397d7fd4cb5c096a8f.png

DML操作视图

因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表中。视图的DML操作,不是所有的视图都可以做DML操作。

有下列内容之一,视图不能做DML操作:

①select子句中包含distinct

②select子句中包含组函数

③select语句中包含group by子句

④select语句中包含order by子句

⑤select语句中包含union 、union all等集合运算符

⑥where子句中包含相关子查询

⑦from子句中包含多个表

⑧如果视图中有计算列,则不能更新

⑨如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作

with check option

含义:对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制

嵌套视图:定义在另一个视图的上面的视图

mysql> create view v_ear_veterans

-> as

-> select * from v_veterans

-> where JOINED < 1980;

使用WITH CHECK OPTION约束时,(不指定选项则默认是CASCADED)

可以使用CASCADED或者 LOCAL选项指定检查的程度:

①WITH CASCADED CHECK OPTION:检查所有的视图

例如:嵌套视图及其底层的视图

②WITH LOCAL CHECK OPTION:只检查将要更新的视图本身

对嵌套视图不检查其底层的视图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值