MYSQL视图特性

文章目录

  • 一、视图是什么
  • 二、为什么要使用视图


一、视图是什么

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图通过视图,可以展现基表的部分数据。而用来创建视图的表叫做基表 :base table。

我们来看看创建视图的语句:

create view 视图名 as select语句;
drop view 视图名;

我们用查询到的内容定义一个视图:

MYSQL视图特性_第1张图片

我们修改视图,发现视图的内容也会被修改:

MYSQL视图特性_第2张图片

那么基表的内容呢?

MYSQL视图特性_第3张图片

我们发现基表的数据也会被影响!这也就验证了我们之前所说的基表和视图数据互相影响!

二、为什么要使用视图

因为视图的诸多优点,如下

  1. 定制用户数据,聚焦特定的数据
    在实际的应用过程中,不同的用户可能对不同的数据有不同的要求。

  2. 简化数据操作
    在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。

  3. 提高数据的安全性
    视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。

  4. 共享所需数据
    通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。

  5. 更改数据格式
    通过使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。

  6. 重用 SQL 语句
    视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

使用视图的时候,还应该注意以下几点:

  1. 创建视图需要足够的访问权限。
  2. 创建视图的数目没有限制。
  3. 视图可以嵌套,即从其他视图中检索数据的查询来创建视图。
  4. 视图不能索引,也不能有关联的触发器、默认值或规则。
  5. 视图可以和表一起使用。
  6. 视图不包含数据,所以每次使用视图时,都必须执行查询中所需的任何一个检索操作。如果用多个连接和过滤条件创建了复杂的视图或嵌套了视图,可能会发现系统运行性能下降得十分严重。因此,在部署大量视图应用时,应该进行系统测试

我们可以用下面的语句查看视图,和表的操作类似:

MYSQL视图特性_第4张图片

有关视图的信息记录在information_schema数据库中的views表中:

MYSQL视图特性_第5张图片

你可能感兴趣的:(mysql,oracle,数据库)