本文共 1555 字,大约阅读时间需要 5 分钟。
什么是视图?
为何要使用视图?
在视图创建之后,可以用与表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据。创建、操作视图
CREATE VIEW productcustomers AS SELECT cust_name ,cust_contact ,prod_idFROM customers c ,orders o ,orderitems otWHERE c.cust_id = o.cust_id AND ot.order_num = o.order_num;
这条语句创建一个名为productcustomers的视图,它联结三个表,以返回已订购了任意产品的所有客户的列表
使用视图查询数据:检索订购了产品TNT2的客户
SELECT cust_name ,cust_contact FROM productcustomers p WHERE prod_id = 'TNT2';
也可以创建格式化的视图
CREATE VIEW vendorlocations AS SELECT concat(rtrim(vend_name),'(',rtrim(vend_country),')') AS vend_titleFROM vendorsORDER BY vend_name;
使用视图查询格式化后的数据:
SELECT *FROM vendorlocations v ;
原本的数据:
可以利用视图过滤数据:例如过滤没有电子邮件地址的客户
CREATE VIEW customeremaillist AS SELECT cust_id ,cust_name ,cust_email FROM customers c WHERE cust_email IS NOT NULL ;
当然也可以使用视图来计算字段:
CREATE VIEW orderitemsexpandes AS SELECT order_num , prod_id , quantity, item_price, quantity * item_price AS expanded_priceFROM orderitems o ;
之后特定查询计算字段就方便许多:
SELECT *FROM orderitemsexpandes o WHERE order_num = 20005;
一般,应该将视图用于检索(SELECT语句)而不用于更新(INSERT、UPDATE和DELETE)。虽然可以但是有限制:当视图有以下操作时,不能更新视图。
视图本身没有数据,如果你对视图增加或删除行,实际上是对其基表增加或删除行。
视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。
视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据创建视图:使用 CREATE VIEW 虚拟表名 AS 后接 select 查询语句
转载地址:http://fpozi.baihongyu.com/