008、MySQL视图
本文最后更新于 65 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

MySQL视图

一、视图介绍及基本语法

1. 介绍

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,
行和列数据来定义视图的查询中使用的表(基表),并且是在使用视图时动态生成的。
通俗来说,视图只保存了查询的SQL逻辑,不保存查询结果。所以在创建视图时,主要
工作就落在创建视图这条SQL语句上。

2. 基本语法

1. 创建
Create [or replace] view 视图名称[(列名列表)] as select语句 [with[cascaded|local|check option]]
or replace:替换视图
2. 查询视图
查看视图创建语句:show create view 视图名称;
查看视图数据:*select from 视图名称....;
3. 修改视图
方式一:
Create [or replace] view 视图名称[(列名列表)] as select语句 [with[cascaded|local|check option]]
方式二:
alter view 视图名称[(列名列表)] as select语句 [with[cascaded|local|check option]]
4. 删除视图
drop view [if exists] 视图名称 [,视图名称]...;**

3. 视图的检查选项

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

3.1 Cascaded

create or replace view v1 as select id,name from student where id <= 20;
create or replace view v2 as select id,name from v1 where id >=10 with cascaded check option;--基于v1建立v2
create or replace view v3 as select id,name from v2 where id <=15; --基于v2建立v3
insert into v3 values (6,'Tom');--插入失败
insert into v3 values (11,'Tom');--插入成功
insert into v3 values (17,'Tom');--插入成功
insert into v3 values (25,'Tom');--插入失败

判断思路:插入id时,因创建V3时没有cascaded选项,所以不会判断id<=15,又因为V3是基于V2创建,所以id会与id>=10判断,再因为V2基于V1创建,所以再判断id是否小于等于20,
因此,插入以上四条数据,结果分别返回失败,成功,成功,失败。

3.2 Local

只对SQL语句中包含with local check option的条件进行判断,没有就不会进行条件判断。

4. 视图的跟新及作用

4.1 视图的跟新

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

  • 包含聚合函数或窗口函数:sum() min() max() count()等;
  • 包含Distinct关键字;
  • 包含:group by,having,union或union all

4.2 视图的作用

  • 简单:视图不仅可以简化用户对数据的理解,也可以简化操作。一些经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部条件。
  • 安全:数据库可以授权,但不能授权到数据库特定行和特定列上,通过视图用户只能查询和修改他们能看到的数据。
  • 数据独立:视图可以帮助用户屏蔽真实表结构变化带来的影响。
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇