mysql-视图详解

视图

img

1.视图创建

在这里插入图片描述

create view viewname as select * fromtable;

2.操作数据

视图也是一张表,我们可以像操作正常表一样操作视图。

在这里插入图片描述

3. 修改视图

create or replace view viewname as select;

在这里插入图片描述

  • 方式二
  • alter view showview as select;

在这里插入图片描述

检查选项

由于视图是虚拟存在的表,我们对视图的操作都会反应到基表当中

假设我们对视图表插入不符合视图where条件的数据,那么这条数据只会存在于基表当中,而我们在视图表无法获悉,这岂不是插入了一条无效数据?

在这里插入图片描述

1 CASCADED级联

假设v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 cascaded,v1视图 创建时未指定检查选项(如果指定了则继续检查上一级,以此往复)。 则在对v2进行操作执行检查时,不仅会检查v2,还会级联检查v2的关联视图v1,如果不满足条件则无法进行相关操作。

在这里插入图片描述

在这里插入图片描述

视图1当了当前

  • u2插入成功

img

  • u1插入情况
  • 在这里插入图片描述
2. LOCAL本地

4.视图更新

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

聚合函数或窗口函数(SUM()、 MIN()、 MAX()、 COUNT()等)
DISTINCT
GROUP BY
HAVING
UNION 或者 UNION ALL
例如我们创建视图时使用了聚合函数,破坏了一对一关系

create view stu_v_count as select count(*) from student;
1
如果我们对这个视图进行更新或插入的,将会报错。

insert into stu_v_count values(10);
1


mysql-视图详解
http://example.com/2024/09/24/mysql/事务视图/视图/
作者
John Doe
发布于
2024年9月24日
许可协议