MySQL视图

本文详细介绍了数据库视图的概念,包括视图的创建、查询、修改和删除操作。视图是一种虚拟表,其数据在使用时动态生成。文章强调了视图的检查选项,如级联和局部检查,以及视图更新的条件。视图的主要作用在于简化查询、增强安全性及数据独立性。此外,还讨论了视图在数据管理和权限控制中的实用价值。
摘要由CSDN通过智能技术生成

1.什么是视图

视图是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。视图只保存SQL逻辑,不保存结果。

2.视图的语法

创建视图:

create [or replace] view view_name as select * from tb1 [with [cascaded|local] check option];

--view_name 视图名称

查询视图:

--1.查看创建视图的语句:
show create view view_name;
--2.查看视图数据:
select * from view_name ...;

修改视图:

1.create [or replace] view view_name as select * from tb1 [with [cascaded|local] check option]
2.alter view view_name as select * from tb1 [with [cascaded|local] check option]

删除视图:

drop view [if exists] view_name ...;

3. 视图的检查选项

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

cascaded(级联,默认):不仅检查当前视图,并且检查这个视图所依赖的视图。如下图,由于V2使用的是cascaded,V2依赖V1,所以V1也默认添加了cascaded,V1,V2做增删改时都会判断条件。V3增删改不检查条件。

local:只对当前视图检查是否符合检查规则,如果当前视图所依赖的视图有条件,则该条件也会判断,但只针对V2而言。如下图,V2做增删改时,要判断条件满足大于等于10且小于等于15;但与cascaded不同的是,V1做增删改时,不检查条件。V3增删改不检查条件

 4.视图的更新

要使视图可以更新,则视图中的行和基础表中的行必须是一对一的关系,如果该视图包含聚合函数或窗口函数,distinct,group by ,having,union 或union all 则视图不能更新。

5.视图的作用

①简化,对于经常使用查询的SQL可以定义为视图,方便SQL的编写;

②安全,视图可以做到脱敏的效果,通过视图,用户只能查询和修改他们能看到的数据;

③数据独立,帮助用户屏蔽真实表结构变化带来的影响。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值