简介

视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询,在视图创建之后,可以用与表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据

作用

  1. 重用SQL语句
  2. 简化复杂的SQL操作,在编写查询后,可以方便地重用它而不必知道它的基本查询细节
  3. 使用表的组成部分而不是整个表
  4. 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
  5. 更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据

规则和限制

  1. 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)
  2. 对于可以创建的视图数目没有限制
  3. 为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予
  4. 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图
  5. ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖
  6. 视图不能索引,也不能有关联的触发器或默认值
  7. 视图可以和表一起使用。例如,编写一条联结表和视图的SELECT语句

实例

创建视图

创建一个视图,该视图的作用为查询年龄大于10的学生

1
CREATE VIEW more_than_ten_ages AS SELECT * FROM t_student WHERE age>10;

使用视图

查询年龄大于10并且班级id等于2的学生

1
SELECT * FROM more_than_ten_ages WHERE class_id=2;