视图的创建

举报
梦笔生花 发表于 2022/11/13 14:47:25 2022/11/13
【摘要】 1. 创建和使用视图例如我们要查询订购了某种产品的顾客,SQL 语句如下:SELECT cust_name, cust_contactFROM customers c JOIN orders o ON c.cust_id = o.cust_id JOIN orderitems oi ON oi.order_num = o.order_numWHERE ...

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。