暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第35讲:MySQL的视图介绍

何先振 2023-11-24
98
以下文章来源于何先振,责编小何


常见的数据库对象



表:表是存储数据的逻辑单元,以行和列的形式存在,列是字段,行是记录。


数据字典:就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可以查看。


约束:执行数据校验的规则,用于保证数据完整性规则。


视图:一个或者多个数据表里的数据的逻辑显示,视图并不存储数据。


索引:用于提高查询性能,相当于书的目录。


存储过程:用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境。


存储函数:用于一次特定的计算,具有一个返回值。


触发器:相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理。



视图的概述



视图的作用:


视图一方面可以帮我们使用表的一部分数据而不是所有的数据,另一方面也可以针对不同的用户制定不同的查询视图。


比如:针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据。比如采购价格,则不会提供给他。


刚刚讲的只是视图的一个使用场景,实际视图还有很多作用。


视图的理解:


视图,可以看成是一个虚拟表,本身是不存储数据的。视图的本质,就可以看成是存储起来的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判断,存在就删除。






          总结



          视图的优点:


          操作简单:可以使开发人员不关心视图对应的表结构。直接通过视图获取数据。


          减少数据冗余:视图本身不存储数据,不占用数据存储的资源。


          数据安全:用户查视图,可以将一些敏感的数据进行隔离。


          适应灵活多变的需求:当业务需求发生变动后,直接改数据表的结构工作量会比较大,可以使用视图来减少改动。


          能够分解复杂的查询逻辑:将复杂的查询逐步分解封装成视图,有利于分解复杂的查询逻辑。


          视图的缺点:


          如果实际表结构变更了,我们就需要及时对相关的视图进行维护。实际项目中,如果视图过多,会导致数据库维护成本问题。


          推荐阅读书籍




          点击上方"何先振"关注并选择设为星标
          各类IT技术文章不会错过!

          文章转载自何先振,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论