什么是视图?

视图就是基于SQL语句的结果集的可视化的表。不过视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。

视图的特点

  • 视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行增删改查操作。
  • 视图不能被修改,表修改或者删除后应该删除视图再重建。
  • 视图可以被嵌套,一个视图中可以嵌套另一个视图。
  • 视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。

视图的功能

  • 将用户限定在表中的特定行上。
  • 将用户限定在特定列上。
  • 将多个表中的列联接起来,使它们看起来象一个表。
  • 聚合信息而非提供详细信息,例如显示一个列的和或列的最大值和最小值。

视图的优点:

  • 视图着重于特定数据。
  • 简化数据的操作,易维护。
  • 视图可以限定查询数据。

视图的缺点:

  • 操作视图会比直接操作基础表要慢,所以我们尽量避免在大型表上创建视图。
  • 尽量不要创建嵌套视图,就是在视图中使用视图。 这样在查询时,会多次重复访问基础表,带来性能损耗。
  • 尽量在视图只返回所需的信息,尽量不要在视图使用不需要访问的表。
  • 在大型表或者复杂定义的视图,可以使用存储过程代替。
  • 频繁使用的视图,可以使用索引视图来代替。

视图的使用场景:

使用场景:

–多个地方用到同样的查询结果

–该查询结果使用的sql语句较复杂


实例:

CREATE OR REPLACE VIEW newview 
AS
SELECT stuid,username,city,stuname FROM `mytable4` WHERE age=24;
SELECT * FROM newview WHERE stuid=2; #一、创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱

CREATE OR REPLACE VIEW emp_v1
AS
SELECT last_name,salary,email
FROM employees
WHERE phone_number LIKE '011%';
#二、创建视图emp_v2,要求查询部门的最高工资高于12000的部门信息

CREATE OR REPLACE VIEW emp_v2
AS
SELECT MAX(salary) mx_dep,department_id
FROM employees
GROUP BY department_id
HAVING MAX(salary)>12000;