Skip to content

视图

视图作为表存在于数据库,但是并不存储数据,而是存储查询逻辑,每次调用视图的时候,就执行一遍这个封装好的逻辑。

创建视图

sql
create [or replace] view view_name as select...;

or replace:如果这个视图存在就更新


查询创建语句

sql
show create view view_name;

查询视图

视图在数据库中是作为表出现的,因此查询操作和查询表的语句相同


修改视图

sql
# 方法一:
create or replace view view_name as select ...;
# 方法二
alter view view_name as select...;

删除视图

sql
drop view [if exists] view_name [,vire_name];

检查选项

视图是以表的形式呈现的,,那自然也可以进行增删改查,当然,视图存储的是逻辑,如果加入了数据,会加入到基表,而不是视图,如果添加了视图查询不到的条目,就会出现问题。 为了解决问题,就诞生了检查选项用来检查操作是否合法

添加检查选项

在创建视图语句之后加上 with [cascade | local] check option 视图就会检查更新,阻止不符合视图创建规范的SQL执行。 另外,MySQL允许根据视图创建视图,因此,检查范围成了问题。为了确定检查的范围,mysql加入了两个范围限定 cascade:级联,如果在子视图加入了这个条件,通过子视图更新基表的操作会检查父视图的规范。 local:局部检查,如果父视图没有定义条件,就不检查


视图的更新

视图可以更新基表的条件:视图的数据必须是和基表是一对一对应的关系,如果数据经过了函数加工,就不能通过视图更新基表

例如:聚合函数,筛选函数,分组,等函数


视图作用

这个玩意有什么用呢?:

简单:简化操作,对于复杂度语句,使用频次比较高的语句都适合转化为视图去呈现。 安全:可以只对用户授予视图权限,使得用户只能看到视图所展示的数据,可以保护数据 数据独立:屏蔽基表的变化对视图的影响(可以取别名,只查看某些字段)


Contact me: 1943284256@qq.com