mysql必知必会(22):视图

2019-08-16  本文已影响0人  warmsirius

一、视图

版本要求:MySQL5+

1. 为什么使用视图?

使用视图的原因:

视图在创建后,可以用与表基本相同的方式利用它们。

注意:视图返回的数据是从其他表中检索出来的,在添加或更加这些表中的数据时,视图将返回改变过的数据。

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;
select cust_name, cust_contact
from productcustomers
where prod_id = 'TNT2';

注意:创建可重用的视图
创建不受特定数据线至的视图是一种好办法。
扩展视图的范围不仅使得它能被重用,而且甚至更有用,这样做不需要创建和维护多个类似视图。

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

如果经常需要这个格式的结果,不必在每次需要时执行联结,创建一个视图,每次需要时使用它即可。

CREATE VIEW vendorlocations AS
select Contact(RTrim(vend_name)), '(', RTrim(vend_country),')')
from vendors
order by vend_name;

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

CREATE VIEW customeremaillist AS
SELECT cust_id, cust_name, cust_email
FROM customers
WEHRE cust_email IS NOT NULL;

视图中where子句和检索中where子句会自动组合,AND关系

4. 使用视图与计算字段

CREATE VIEW orderitemsexpanded AS
SELECT order_num,
       prod_id,
       quantity,
       item_price,
       quantity*item_price AS expanded_price
FROM orderitems;

5. 更新视图

通常,视图是可更新的,即可以对它们进行INSERT、UPDATE和DELETE。

更新一个视图将更新其基表。如果你对视图增加或删除,实际上是对基表进行增加和删除。

但是,并非所有的视图都是可更新的。基本上可以说,如果MySQL不能正确地确定被更新的基数据,则不允许更新。

即如果视图定义中有以下操作,则不能进行视图的更新:

  • 分组(GROUP BY 或者HAVING)
  • 联结
  • 子查询
  • 聚集函数(Min()、Max()、Count()、Sum()等)
  • DISTINCT
  • 导出(计算)列

注意:视图主要用于数据检索,而不用于更新。

上一篇 下一篇

猜你喜欢

热点阅读