MYSQL-----视图

目录

1、作用

2、视图

2.1创建视图

2.2查询

2.3修改

2.4删除

3.视图检查选项

3.1cascaded(级联):

3.2 local

4.更新即作用

5.删除视图


MySQL 视图是一种虚拟表,视图中的数据并不在数据库中真实存在,行和列数据来定义视图的查询中使用的表,并且是在使用视图时动态生成的。

通俗来讲,视图只保存了查询的sql逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条sql查询语句上

它是由一个 SQL 查询结果集构成的。以下是关于 MySQL 视图的一些要点:

1、作用

1. 简化复杂查询:可以将复杂的查询逻辑封装在视图中,对于经常使用的复杂查询,使用视图可以让后续的查询更加简洁方便。

2. 数据安全:可以限制用户对特定数据的访问,只展示用户需要看到的部分数据,提高数据的安全性。

3. 保持数据独立性:如果底层表的结构发生变化,只要视图的查询逻辑不受影响,使用视图的应用程序无需修改。

2、视图

2.1创建视图

使用 CREATE VIEW 语句来创建视图,例如:

CREATE [OR REPLACE]VIEW 视图名称[(列名列表)] AS SELECT 语句[with [cascaded|local] check option]

create or replace :表示创建或替换视图

 select 查询的表叫做基表

2.2查询

查看创建视图语句:show create view 视图名称;

查看视图数据:select*from 视图名称.......;

视图名称后面跟查询条件,表怎么查询,视图就怎么查询

2.3修改

方式一:create [or replace] view 视图名称[(列名列表)]as select 语句[with [cascaded|local] check option]
方式二:alter view 视图名称[(列名列表)]as select 语句[with [cascaded|local] check option]

2.4删除

drop view if exists 视图名称;

3.视图检查选项

当使用with check option 子句创建视图时,MYSQL会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。MYSQL允许基于另一个视图创建视图,它会检查依赖视图中的规则以保持一致性。为了确定检查的范围。MYSQL提供了两个选项:

cascaded 和local ,默认值为cascaded

向视图中插入数据:

insert into stu_v_1 values (5,'张三');

在基表中可以看见,但是在视图中看不见,这是因为在创建视图的时候指定了条件,id<5,也就是通过视图插入的数据,视图查不到(不满足指定条件),满足指定条件是可以查到的

为了避免上面这种情况,在mysql中,在视图创建的时候提供了一种语法,我们可以在后面加上检查选项来避免上述情况的发生

[with [cascaded|local] check option]

3.1cascaded(级联):

create or REPLACE view stu_v_1 as select student.id,student.name from student where id<5;

当我们写上这么一条语句时,插入id大于5或id小于5的数据都是可以的

create or REPLACE view stu_v_2 as select student.id,student.name from student where id>2 with cascaded check option;

在写上第一条语句的基础上在写上上面这条语句,当我们进行插入数据时,不仅要检查上面这条语句的条件还要检查第一条语句的条件,相当于在第一条语句后面也加上了with cascaded check option;

总结cascaded:

1.当视图创建或替换时,并且所有的上级均为加检查选项,则在插入数据时,不会对数据进行检查

2.若在创建或替换视图时,视图的某一级具有检查选项,就会对数据进行检查,从下往上,第一个检查选项上面的条件都会对插入的数据进行检查

3.2 local

create or REPLACE view stu_v_1 as select student.id,student.name from student where id<5;
create or REPLACE view stu_v_2 as select student.id,student.name from student where id>2 with local check option;

当第二条语句执行,v2替换掉v1视图,当插入数据时只会对v2的条件进行检查选项,不会对上一级的条件进行检查,如果想对上一级的条件进行检查就需要在上一级视图加上local

local总结:

local检查选项只会对当前视图进行检查,即只会检查当前和上级含有检查选项的条件进行检查

4.更新即作用

更新:

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一项,则该视图不可更新:

1.聚合函数或窗口函数(sum(),min(),max(),count()等)

2.distinct

3.group by

4.having

5.union或者union all

如果基础表中的两条数据对应视图中的一条数据,是不能对视图进行插入操作的

作用:

1.操作简单:

视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而是的用户不必为以后得操作每次指定全部的条件。

2.安全

数据库可以授权,但不能授权到数据可特定行和特定列上。通过视图用户只能查询和修改他们所能见到的数据

5.删除视图

使用 DROP VIEW 语句删除视图,例如:

DROP VIEW view_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值