SQL视图

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态数据的查询。不是很严密的来说视图就是一个动态运行的查询,例子如下:

SELECT cust_name,cust_contact
FROM Customers,Orders,OrderItems
WHERE Customers.cust_id = Orders.cust_id
  AND OrdersItems.order_num = Orders.order_num
  AND prod_id = 'RAGN01';
#如果使用以上方式查询订购了某种产品的顾客,需要理解相关的表结构,指导如何创建查询和表进行联结。可以把整个查询包装成一个名为ProductCustomers的虚拟表,就可以使用以下方式

SELECT cust_name,cust_contact
FORM ProductCustomers
WHERE prod_id = 'RAGN01';
#ProductCustomers是一个视图,不包含任何列或数据,包含的是一个查询。

为甚么要用到视图:
1. 重用SQL语句;
2. 简化复杂SQL操作,编写查询后,可以方便地重用它而不必知道细节;
3. 使用表的一部分而不是整个表;
4. 保护数据,通过权限管理
5. 更改数据格式与表示,视图可以返回与底层表的表示和格式不同的数据。

创建于删除视图:
1. 删除很简单 DROP VIEW view_name;
2. 创建视图
(1). 利用视图简化复杂的联结

CREATE VIEW ProductCustomers AS 
SELECT cust_name,cust_contact,prod_id
FROM Customers,Orders,OrderItems
WHERE Customers.cust_id = Orders.cust_id
  AND OrderItems.order_num = Orders.order_num;

(2). 用视图重新格式化检索出的数据

   CREATE VIEW vendorLocations AS 
   SELECT CONCAT(vend_name,' (',vend_country,')') AS vend_title
   FROM Vendors;

(3). 用视图过滤不想要的数据

   CREATE VIEW CustomerEMailList AS 
   SELECT cust_id,cust_name,cust_email
   FROM Customers
   WHERE csut_email IS NOT NULL;

(4). 使用视图与计算字段

   CREATE VIEW OederItemsExpanded AS
   SELECT order_item,
          prod_id,
          quantity,
          item_price,
          quantity*item_price AS expanded_price
   FROM OrderItems;

正确使用视图,可以极大简化数据的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值