
表:表是存储数据的逻辑单元,以行和列的形式存在,列是字段,行是记录。
数据字典:就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可以查看。
约束:执行数据校验的规则,用于保证数据完整性规则。
视图:一个或者多个数据表里的数据的逻辑显示,视图并不存储数据。
索引:用于提高查询性能,相当于书的目录。
存储过程:用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境。
存储函数:用于一次特定的计算,具有一个返回值。
触发器:相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理。
视图的作用:
视图一方面可以帮我们使用表的一部分数据而不是所有的数据,另一方面也可以针对不同的用户制定不同的查询视图。
比如:针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据。比如采购价格,则不会提供给他。
刚刚讲的只是视图的一个使用场景,实际视图还有很多作用。
视图的理解:
视图,可以看成是一个虚拟表,本身是不存储数据的。视图的本质,就可以看成是存储起来的select语句。
视图中的select语句中涉及到的表,称为基表。
针对视图做DML操作,会影响到对应的基表中的数据。
视图本身的删除,不会导致基表中数据的删除。
视图的应用场景:
针对小型项目,不推荐使用视图。针对大型项目,可以考虑使用视图。
视图的优点:
简化查询,控制数据的访问。
创建单表视图

创建成功之后,就可以直接使用视图查数据。视图中的数据就是创建视图时select查到的数据。

还可以将select计算出来的值,创建一个视图来查。

使用创建好的视图查数据,简化查询

创建多表连接视图

使用视图访问多表连接查出来的数据

创建视图,用来访问多表连接格式化后的数据

查询视图访问格式化的数据

基于视图创建视图


语法1:查看数据库的表对象、视图对象
show tables;

语法2:查看视图的结构
describe 视图名字

语法3:查看视图的属性信息
show table status like 视图名
举栗子:执行结果显示,Comment为view,说明这个表是视图,其他信息为null,说明这是一个虚拟表。

语法4:查看视图的详细定义信息
show create view 视图名称

先查询视图中的数据,选101进行更新

此时基表中员工101的工资也是17000

更新视图中的101员工的工资

查看视图中的数据,此时已经看视图数据被更新了

查看基表的数据也被更新

所以更新视图会影响基表的数据,反过来也是一样。
视图中有100号员工的数据

基表中也有100号员工的数据

删除视图中100号员工的数据

此时视图中查不到100号员工的数据

基表中的100号员工数据也查不到了

删除视图中的数据,同时也会删除基表中的数据。反过来也是一样。
不能更新和删除没有和基表中一对一的数据:
通过员工表计算出来的部门平均工资的视图,不是和基表一对一的关系。

更新时失败。

删除时也会失败

虽然视图可以更新数据,但是实际开发中视图都是用于查询,一般不建议更改视图中的数据。
查看视图的字段

如果要修改视图,方式一:

此时查看原先的视图多了一个字段

也可以使用方式二:

通过drop语法删除

删除后就查不到了

也可以在删除视图时,加个if判断,存在就删除。

视图的优点:
操作简单:可以使开发人员不关心视图对应的表结构。直接通过视图获取数据。
减少数据冗余:视图本身不存储数据,不占用数据存储的资源。
数据安全:用户查视图,可以将一些敏感的数据进行隔离。
适应灵活多变的需求:当业务需求发生变动后,直接改数据表的结构工作量会比较大,可以使用视图来减少改动。
能够分解复杂的查询逻辑:将复杂的查询逐步分解封装成视图,有利于分解复杂的查询逻辑。
视图的缺点:
如果实际表结构变更了,我们就需要及时对相关的视图进行维护。实际项目中,如果视图过多,会导致数据库维护成本问题。





