零基础入门 SQL 系列之(十)视图

视图是虚拟的表。与包含数据的表不一样,视图是包含查询语句。
MySQL 从版本 5 开始支持视图。
视图的存在主要是为了简化复杂的查询。
例如我们要查询订购了某种产品的顾客,SQL 语句如下:

SELECT 
	cust_name, 
    cust_contact
FROM 
	customers c 
    JOIN orders o ON c.cust_id = o.cust_id
    JOIN orderitems oi ON oi.order_num = o.order_num
WHERE
	oi.prod_id = 'BR01';

这种复杂的查询需要查询人员非常熟悉表的结构,知道如何连接表以及如何创建查询。
视图的存在就是为了简化复杂的查询。例如,我们可以创建如下视图:

CREATE VIEW productcustomers AS
SELECT 
	cust_name, 
    cust_contact,
    prod_id
FROM 
	customers c 
    JOIN orders o ON c.cust_id = o.cust_id
    JOIN orderitems oi ON oi.order_num = o.order_num

接下来我们便可以利用这个视图来查询订购了商品 BR01 的客户。

SELECT 
	cust_name,
    cust_contact
FROM 
	productcustomers
WHERE 
	prod_id = 'BR01';

上述查询比原来的查询简单了好多,对表结构不熟悉同样可以进行查询。

在简化计算字段的使用上,视图也很有用。
例如:我们要查询某个订单的总金额。

SELECT 
	order_num,
    SUM(quantity * item_price) total
FROM 
	OrderItems 
WHERE 
	order_num = 20005;

我们同样可以创建一个视图来简化查询。

CREATE VIEW total AS
SELECT 
	order_num,
    SUM(quantity * item_price) total_price
FROM 
	OrderItems 
GROUP BY
	order_num;

创建完视图后,我们的查询可以写成如下形式:

SELECT
	order_num,
    total_price
FROM
	total
WHERE
	order_num = 20005;

视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。 视图提供了一种封装 SELECT 语句的层次,可用来简化数据处理, 保护基础数据。

备注:示例中用到的表和数据可以通过链接(https://github.com/songw/sql)下载。

本系列目录:
零基础入门 SQL 系列之(一)查询数据
零基础入门 SQL 系列之(二)排序
零基础入门 SQL 系列之(三)过滤数据
零基础入门 SQL 系列之(四)内置函数
零基础入门 SQL 系列之(五)数据汇总
零基础入门 SQL 系列之(六)表连接
零基础入门 SQL 系列之(七)组合
零基础入门 SQL 系列之(八)插入、更新、删除
零基础入门 SQL 系列之(九)创建和操作表
零基础入门 SQL 系列之(十)视图

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值