暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

(十)视图

统计美学 2021-09-17
553

什么是视图?如何使用视图?


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





文章转载自统计美学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论