《SQL必知必会》—— 视图

视图

使用场景:

  • 重用SQL语句
  • 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节
  • 使用表的组成部分而不是整个表
  • 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
  • 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据

使用:

  • 视图用 CREATE VIEW 语句来创建
  • 使用 SHOW CREATE VIEW viewname ;来查看创建视图的语句
  • 用 DROP 删除视图,其语法为 DROP VIEW viewname
  • 更新视图时,可以先用DROP再用CREATE,也可以直接用CREATE OR
    REPLACE VIEW。如果要更新的视图不存在,则第 2 条更新语句会创建一个视图;如果要更新的视图存在,则第 2 条更新语句会替换原有视图
-- 利用视图简化复杂的联结
CREATE VIEW productscustomers AS
SELECT cust_name, cust_contact, prod_id
FROM customers, orders, orderitems
WHERE orders.cust_id = customers.cust_id AND orders.order_num = orderitems.order_num;   -- 返回订购任意产品的所有顾客

SELECT * FROM productscustomers WHERE prod_id = 'RGAN01';                               -- 返回订购了RGAN01的所有顾客

-- 利用视图重新格式化检索出的数据
CREATE VIEW VendorLocation AS
SELECT CONCAT(vend_name,' (', vend_country, ')') AS vend_title
FROM vendors;

SELECT * FROM vendorlocation;

-- 使用视图过滤不要的数据
CREATE VIEW CustEmailList AS
SELECT cust_id, cust_name, cust_email
FROM customers WHERE cust_email IS NOT NULL;

SELECT * FROM CustEmailList;

-- 使用视图与计算字段
CREATE VIEW OrderItemsExpanded AS
SELECT order_num, prod_id, quantity, item_price, quantity*item_price AS expanded_price
FROM orderitems;

SELECT * FROM OrderItemsExpanded WHERE order_num = 20008;

《SQL必知必会》系列索引:

推荐阅读更多精彩内容