一、视图
视图即是虚拟表,也称为派生表,因为它们的内容都派生自其它表的查询结果—《SQLite权威指南》
简单的说就是,视图是基于已存在的表通过SELECT查询语句将查询出来的结果集作为数据生成的一个虚拟表。可以将视图当作一个正常的表来查询。至于直接对视图数据进行增删改的操作,有一些需要注意的地方会在下文中提及。然而请切记,视图不是表,不保存数据,只是一张虚拟表。
那么既然是基于已存在的表,为什么还要使用视图呢?在一些比较复杂的业务需求中,我们需要写出大量复杂的关联查询语句来获取需要的数据,这个是十分的消耗效率的,这时可以将复杂的关联查询结果集设置为视图,这样复杂关联语句无需再从应用层向MySQL数据库发送,只要请求相应的视图即可。简化了应用层的开发,还能够提升查询速度。
二、创建视图
- 创建语句模型
CREATE VIEW name_view AS SELECT col1,col2... FROM ... [WHERE ... WITH CHECK OPTION];
这里需要注意的是,一般在给视图起名字的时候,会在名字后面添加_view
来区别视图与基本表
- WITH CHECK OPTION
如果在创建视图的时候制定了WITH CHECK OPTION
,那么更新数据时不能插入或更新不符合视图条件的记录。
CREATE VIEW t_view AS SELECT a.id,b.name,a.num FROM tableA a LEFT JOIN tableB b ON a.id = b.id WHERE a.num > 30 WITH CHECK OPTION;
因为此时添加了WITH CHECK OPTION
,因此在对视图进行插入或更新必须符合条件num > 30
三、修改视图
CREATE OR REPLACE VIEW name_view AS SELECT ... FROM ...;
四、查看视图
- 查看库中的视图
SHOW TABLES;
- 查看视图详情
DESC name_view;
SHOW FIELDS FROM name_view;
五、视图数据操作
1.基本表数据变更
由于视图是基于基本表的,因此当基本表的数据有所变动时,视图的数据会随之变动
2.视图数据变更
限制条件太多,目前并没有实际运用到,暂且放过