什么是视图
视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全
为什么需要视图(优点)
- 部分公司没有测试环境的情况下(很少的公司),会使用视图将数据取部分字段给开发人员以确保敏感数据的不被泄露(电话号码和身份证),同时避免开发人员删库跑路。当然大部分的公司都是有测试数据库(所有数据都是虚假的)的以确保开发人员的开发自由和数据的安全。
- 对于开发 人员有一种代码封账的意义(屏蔽了视图中的查询逻辑)。
- 逻辑独立性,可以屏蔽真实表结构变化带来的影响。(降低耦合)
- 规避一些操作失误(误删)。
视图的缺点
- 性能相对较差,简单的查询也会变得稍显复杂(个人认为:视图不属于优化,只是方便)
- 修改不方便,特变是复杂的聚合视图基本无法修
- 过多 的视图会导致程序变慢,mysql的视图因为是虚拟表,需要经过两次io,而oracle的视图是物理表只用经过一次io所以我们所说的是少用mysql的视图当时推荐在oracle中使用视图。(mysql中大量的视图会导致性能的降低,有些公司就是慢慢的增加视图最终会导致数据查询缓慢,却总是找不到问题所在犹如温水煮青蛙)
- 一些特定的视图不能执行写,分组,排序的操作
视图的基本使用
- 创建视图 CREATE VIEW x1 AS SELECT `name` FROM xx join tt on xx.a = tt.a;
- 使用视图查询 SELECT * FROM test_view_2;