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、可读性不好。