

什么是视图?如何使用视图?
1、定义:视图(VIEW)即虚拟的表,本质上是对查询语句的一个封装,它将检索结果封装成一个虚表,这个虚表就称为“视图”,视图中的数据都是从其它基表中检索出来的,实际上并没有显式地存储在数据库中。
2、作用:
SELECT语句重用:视图将SELECT语句封装起来实现重用;
简化复杂操作:像基表一样直接使用创建好的视图简化SQL操作;
更改数据显示格式:返回与基表数据格式不同的、更加易读的数据;
保护基础数据:仅给予用户部分数据相关操作权限而非全部数据;
3、使用:
创建视图:CREATE VIEW view_name AS + 检索语句;
使用SHOW CREATE VIEW view_name查看创建视图的SQL语句;
删除视图:DROP VIEW view_name;
更新视图:可以删除视图再进行创建,也可以使用关键字CREATE OR REPLACE VIEW view_name AS + 检索语句 以更新视图;

视图使用示例
步骤一,建立查询:查询每个供应商所提供的产品种类数量
SELECT vendors.vend_id, vend_name, vend_address, COUNT(products.vend_id) AS product_quantity
FROM vendors LEFT OUTER JOIN products ON vendors.vend_id = products.vend_id
GROUP BY vendors.vend_id
ORDER BY product_quantity DESC;

步骤二,创建视图:将上述查询语句进行封装
CREATE OR REPLACE VIEW vend_prodquantity AS
SELECT vendors.vend_id, vend_name, vend_address, COUNT(products.vend_id) AS product_quantity
FROM vendors LEFT OUTER JOIN products ON vendors.vend_id = products.vend_id
GROUP BY vendors.vend_id
ORDER BY product_quantity DESC;
# 创建好的视图会像基表那样存储在数据库中
步骤三,查看视图:确保试图创建正确
SELECT * FROM vend_prodquantity;
# 与检索语句返回的结果集一致

步骤四,使用视图:
1、查询供货种类最少的两家供应商信息
SELECT * FROM vend_prodquantity
ORDER BY product_quantity, vend_id LIMIT 2;

2、按供货种类数量对供应商进行排名
SELECT vend_id, vend_name, product_quantity,
rank() over(order by product_quantity DESC) AS 'quantity_ranking'
FROM vend_prodquantity;


使用视图需要注意什么呢?
1、视图可以嵌套,可以和基表一起使用,创建数目不受限制,但视图名须唯一;
2、视图虽然可以进行插入、删除、更新等操作,但由于视图中不存在实际存储于数据库中的数据,所以增删改操作都将改变视图对应的基表中的数据,即修改视图等价于修改基表,所以视图不推荐用于数据增删改;
3、对于复杂查询,视图会极大地简化查询语句,但由于视图本质上是查询语句,所以在每次使用视图时都将执行一次或多次查询,当视图嵌套严重时,性能会受到较大影响。
像鹿穿过花岗,风吹过一只扶桑。
——Mr. Yi






