Mysql视图详解

在查询中,经常将查询结果当作一张临时表来看,而View就是一张虚拟的表。

比如:查询商品表平均价格最贵的三个品牌,需要计算平均价格到一张临时表。如果要查询平均价格最低的三个品牌,同样需要和上面相同的一张临时表,所以此时就需要view视图。

View 是对表数据的一种映射(关系),当表的数据改变时,View的数据也会随之改变。

创建视图

create view 视图名称 as select 语句

视图一旦创建完毕,就可以像表一样查询。

视图的修改问题

举例:假设视图的平均价格发生改变,无法映射到表的具体的行,这种情况下视图是无法修改的。所以当视图和表一一对应时,视图是可以修改的。

一一对应:根据select关系,从表中取出的行,只能算出视图中确定的一行,反之,视图中任意抽一行,能够反推出表的确定的一行。

视图是一直存在的吗?

视图的定义是一直存在的,但是视图不一定是一直存在的。

视图在文件上与表的区别

视图在文件上 只有一个 frm 文件(表的结构定义),不存在 MYD 数据文件 以及 MYI 索引文件。

视图的作用

  1. 简化查询:复杂统计时,先生成一个中间结果,再查询视图

  2. 更精细的权限控制:用户表为例, 两个网站合作,可以查询到对方网站的用户,需要向对方开放用户表权限,但是又不想开放密码字段,此时可以创建一个没有密码的view,提供给第三方。

  3. 用于分表查询,当数据库数据过多时,常常会进行分表操作。比如:article 表又1000w 的文章,为了解决单表数据量过大的问题,将表分为5张:article1,article2,…,article5 五张表。但是查询时需要搜索这五张表,这是可以创建一个包含这五张表数据的view,从而方便查询。

最后更新于