数据库视图

Database View

假设有这样的两个场景:

  1. 出于安全考虑, 一个表只开放部分字段给特定用户去查询
  2. 在某些实际的业务场景下, 有特定的业务数据查询, 有没有面向用户的更直观的查询, 而不用复杂的join等等操作

在这两种情况下, 就可以用到视图了. 这两种情况都可以创建一种虚的关系来提供给用户, 这种关系就是视图.

比如有一个账户表user包含用户名称username, 邮件email, 薪水salary, 我们给某些用户的权限是不能查询薪水这个字段, 那么我们可以创建一个视图:

create view userinfo as
select username, email
from user;

将这个视图的权限提供给用户. 视图出现在table出现在的任何地方, 使用方法与table相同.

视图一般不存储数据, 用视图查询时会实时执行试图的表达式, 来保证数据的实效性.

视图也可以物化, 存储数据, 随实际的数据表更新而更新, 有的数据库是实时更新, 有的数据库是定时更新, 这样可以提高查询效率, 但是也增加了开销, 需要综合考虑是否需要物化

视图是否可以做增删改呢, 情况比较复杂, 一般情况不做支持.