1. 创建和使用视图
例如我们要查询订购了某种产品的顾客,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
运行结果如下:
网络异常,图片无法展示
|
视图 productcustomers 中的内容如下:
网络异常,图片无法展示
|
接下来我们便可以利用这个视图来查询订购了商品 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;
运行结果如下:
网络异常,图片无法展示
|
视图 total 中的内容如下:
网络异常,图片无法展示
|
视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。 视图提供了一种封装 SELECT 语句的层次,可用来简化数据处理, 保护基础数据。
2. 课后题
下列用于创建视图的语句是
A. CREATE VIEW
B. INSERT INTO
C. CREATE TABLE
D. UPDATE