文章目录
- 一、视图概念
- 二、创建视图
- 三、证明数据来源于表
- 四、视图规则与限制
一、视图概念
视图的关键点有两点,一个是创建,一个是数据来源。
视图是一个虚拟的表,其内容由查询来进行定义。视图的数据变化会影响基表,基表的数据变化也会影响视图。
注意,视图不是一个真正的表,但是我们可以使用和表一样的操作来查询它。
二、创建视图
create view 视图名 as select 语句
注意,视图名不要和基表的名字相同。
比如我们可以将emp表的两列作为一个视图:
mysql> create view myview as select ename,job from emp;//将基表的ename和job定义成一个视图
我们可以查看一下视图中的数据,查询的方法和一个表示一样的。
三、证明数据来源于表
当建立一个表之后,我们可以进入/var/lib/mysql的路径下查看一下表的存储位置:
var/lib/mysql/scott
会发现这里面是没有myview的结构的,值得注意的是MySQL8.0将.frm文件并入到了.ibd文件中。
我们修改表myview中的内容:
mysql> update myview set job='TEACHER' where ename='SMITH';
此时我们再来查询基表emp中的内容,发现做了修改。
说明两个表的数据是一个数据,同理修改基表的数据,视图中的数据也会发生改变。
四、视图规则与限制
- 与表一样,必须唯一命名(不能出现同名视图与表名)。
- 创建视图数据无限制,但要考虑复杂查询创建为视图之后的性能影响。
- 视图不能添加索引,也不能添加关联的触发器或者默认值。
- 视图可以提高安全性,但必须有足够的访问权限。
- order可以用在视图中,但是如果从视图中检索数据select中也含有order,那么视图中的order by将被覆盖。
- 视图和表可以一起使用。