mysql-视图详解
视图

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插入成功

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/事务视图/视图/