MySQL视图

一、视图的概念

​ 视图是虚拟的表。它将select语句查询到的数据包装成一张虚拟的表。后续可以直接利用这张虚拟表而不必知道原有表的结构,从而能简化后续的SQL操作。

【注】视图本身是不包含数据的。视图提供了一种MySQL的select语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。

二、利用视图简化复杂的联结

举例:

create view productcustomers as
select cust_name, cust_contact, prod_id
from customers, orders, orderitems
where customer.cust_id = orders.cust_id
	and orderitems.order_num = orders.order_num;
/*
	这条语句创建了一个名为productcustomers的视图,它联结了三个表,返回了一张包含了已订购任意产品的所有客户	   的虚拟表。
*/
select cust_name, cust_contact
from productcustomers
where prod_id = 'TNT2';
-- 从视图中检索订购了产品'TNT2'的客户。

​ 可以看出,利用视图可以极大地简化复杂的SQL语句。一次创建出来的视图可以被多次重复使用。

三、利用视图重新格式化检索出的数据

举例:

create view vendorlocations as
select concat(rtrim(vend_name), '(', rtrim(vend_country), ')')
	as vend_title
from vendors
order by vend_name;
/*
	如果需要经常使用这个格式的结果,就可以创建一个这样的视图,这样不必每次都得执行字符串连接操作,只需要直接使	 用已有的视图即可。
*/
select *
from vendorlocation;
-- 从视图中直接检索这个格式的结果即可。

四、利用视图过滤不想要的数据

举例:

create view customeremaillist as
select cust_id, cust_name, cust_email
from customers
where cust_email is not null;
/*
	先利用where子句过滤掉cust_email为null的那些行,然后创建视图,就可以得到一张所有cust_email都不为空的	虚拟表了。
*/

五、利用视图简化计算字段的使用

举例:

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 = 20005;
原文地址:https://www.cnblogs.com/jiajun107/p/12893380.html