Mysql的视图使用场景笔记
mysql的视图本质上就是一条预定义的联表查询sql语句
当设计一个数据库模型的时候,各个数据表模型之间的关系在一定程度上是独立的,即使两个数据模型表之间存在一对多或者多对多的关联关系时,通常的做法是在B表中添加A表的主键进行关联,多对多则使用中间表,而不是设置外键(设置外键不利于表的扩展)
引入视图就是为了简化代码中的sql语句,比如列表查询的时候,需要展示3张表,乃至多张表的时候,如果不适用视图的话,那么列表查询时或者数据统计时需要编写大量的重复sql语句很容易出错,此时就可以使用navicat工具中的视图设计器,将list列表统计页表头中涉及多张表字段信息的多张表设计为一张列表视图,那么此时在代码中编写列表页与数据统计时的sql将会非常的方便与简洁
可能遇到的问题:
对视图的列表页进行分组时,聚合后的视图字段可能存在多个相同字段(例如视图的多张源表均有id字段),那么分组聚合时可能导致以下问题的出现
参考:1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains解决
解决方案(推荐使用第三种方案):SELECT list is not in GROUP BY clause and contains nonaggregated column