MySQL学习---12、视图

1、常见的数据库对象

对象描述
表(Table)表时存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是字段
数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可查看
约束(Constraint)执行数据校验的规则,用于保证数据完整性的规则
视图(View)一个或者多个数据表里的数据的逻辑显示,视图并不存储数据
索引(Index)用于提高查询性能,相当于书的目录
存储过程(Procedure)用于完成一次完整业务处理,没有返回值,但可以通过传出参数将多个值传给调用环境
存储函数(Function)用于完成一次特点的计算,具有一个返回值
触发器(Trigger)相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理

2、视图概述

在这里插入图片描述

2.1 视图的理解
1、视图是一种虚拟表,本身是不具有数据的。占用很少的存储空间。
2、视图建立在已有表的基础上,视图赖以建立的这些表被称为基表。
3、视图的创建和删除只一下视图本身,不影响对应的基表。但是当对视图中的数据进行增加、删除和修改操作时,数据表中的数据会相应的发送变化,反之依然。
4、视图是向用户通过基表数据的另一种表现形式。

3、创建视图

1、在Create View语句中嵌入子查询
Create [or replace]
[algorithm ={Undefined|Merge|TempTable}]
view 视图名称[(字段列表)]
as 查询语句
[With [Cascaded | Local] Check Option]
2、精简版
Create View 视图名称
as 查询语句
3.1 创建单表视图

在这里插入图片描述
说明:
1、实际上我们在查询SQL语句的基础上封装了视图View,这样就会基于SQL语句的结果形成一张虚拟表。
2、在创建视图时,没有在视图名后面指定字段列表,则视图中字段列表默认和Select语句中的字段列表一致。如果Select语句取了别名,那么视图中的字段名和别名相同。

3.2 创建多表联合视图

举例1:
在这里插入图片描述
举例2:利用视图对数据进行格式化
在这里插入图片描述

4、查看视图

1、查看数据库的表对象、视图对象

show tables;

在这里插入图片描述
2、查看视图的结构

Desc / Describe 视图名称;

在这里插入图片描述
3、查看视图的属性信息

show table status like '视图名称';

在这里插入图片描述
4、查看视图的详细定义信息

show Create view 视图名称;

在这里插入图片描述

5、更新视图的数据

5.1 一般情况
MySQL支持使用Insert、Update、Delete语句对视图的数据进行插入、更新和删除操作。当视图中的数据发生变化时,数据表中的数据也会发生变化,反之亦然。

1、Update操作
在这里插入图片描述
2、Delete操作

在这里插入图片描述

5.2 不可更新的视图

要使视图可更新,视图中的行和底层基本表中的行之间必须存在一对多关系。另外当视图定义出现如下情况时,视图不支持更新操作:
1、在定义视图的时候指定了"Algorithm=TempTable",视图将不支持Insert和Delete操作。
2、视图不包含基表中所有被定义为非空又未指定默认值的列,视图将不支持Insert操作。
3、在定义视图的Select语句中使用了Join联合查询,视图将不支持Insert和Delete操作。
4、在定义视图的Select语句后的字段列表使用了数字表达式或子查询,视图将不支持Insert,也不支持Update使用了数学表达式、子查询的字段值。
5、在定义视图的Select语句后的字段列表中使用了Distinct、聚合函数、Group By、Having、Union等,视图将不支持Insert、Update、Delete。
6、在定义视图的Select语句中包含了子查询,而子查询引用了From后面的表,视图将不支持Insert、Update、Delete。
7、视图定义基于一个不可更新视图
8、常量视图。

6、修改、删除视图

6.1 修改视图
1、方式1:使用Create or Replace View子句修改视图

在这里插入图片描述
注意:Create view 子句中的各列的别名应和子查询中各列相对应。
2、方式2:alter view
修改视图的语法是:

alter view 视图名称
as
查询语句;
6.2 删除视图

1、删除视图只是删除视图的定义,并不会删除基表的数据。
2、删除视图的语法

Drop view 视图名;

说明:基于视图a、b创建了新的视图c,如果将视图a或者视图b删除,会导致视图c的查询失败。这样的视图c需要手动的删除或修改,否则会影响使用。

7、视图总结

7.1 视图优点
1、操作简单
2、减少数据冗余
3、数据安全
4、适应灵活多变的需求
5、能够分解复杂的查询逻辑
7.2 视图缺点
1、视图过多会导致数据库维护成本的增加
2、如果实际数据表的结构变更了,我们就需要及时对相关的视图进行维护。
3、可读性不好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光下的赶路人star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值