MySQL数据库8(二十)视图

视图

视图概念

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

 

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

 

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

视图基本操做

建立视图

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

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

 

 

表里面不能出现同名字段因此会显示重复。事件

 

查看视图:视图自己是虚拟表,全部关于表的一些操做都适合视图it

 

 

使用视图

视图是一张虚拟表,能够直接把视图当作“表”操做,可是视图自己没有数据,是临时执行select语句获得对应的结果。视图主要用于查询操做。io

 

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

 

 

修改视图

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

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

 

 

删除视图

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

 

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:只检查将要更新的视图自己

 

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

相关文章
相关标签/搜索