什么是视图 视图(View)是一种虚拟的表,它是基于一个或多个实际表的查询结果构建的,它可以被视为一个预定义的查询,可以简化复杂的查询操作,并提供了一种方便的方式来访问和组织数据。通过使用视图,你可以隐藏实际表的复杂性,只暴露出需要的数据。比较难以理解,看案例比较好理解 例如:(这是我们《sql基础学习高级联结(十一)》中的案例) 假如将整个查询句封装为一个名为COO的虚拟表,就可轻松检索相同的数据 创建视图 使用CREATE VIEW创建不存在的视图 这条语句创建了一个条名为COO的视图,它联结了三张表customers, orders,orderitems,返回了订单数量大于100的客户,如果执行SELECT * FROM COO将列出所有订单大于100的客户的信息。 我用的DBeaver,创建的视图位于表的下面 我们想获取Village Toys的订单信息 用视图重新格式化检索出的数据 删除视图 为什么使用视图 1、重用sql 2、简化复杂的sql语句,相当于封装了一个公共的查询语句,不用重复书写 3、使用表的一部分而不是整个表 4、保护数据。授权用户访问表的特定部分 这里需要注意性能问题,如果多表联结和过滤创建了复杂的视图,最好提前测试下性能是否需要使用视图。 视图的规则和限制 1、与表一样视图必须是唯一命名(视图不能与别的视图或则表名一样) 2、对于可以创建的视图数量没有限制 3、创建视图必须有足够的访问权限 4、视图可以嵌套,利用从其它视图中检索出来的数据构建新视图 5、一些DBMS工具在试图查询中禁止使用ORDER BY的 6、视图不能索引,也不能有关联的触发器或则默认值SELECT customers.cust_name,
orders.order_num ,
orderitems.quantity,
SUM(orderitems.item_price* orderitems.quantity) AS OrderTotal
FROM customers, orders,orderitems
WHERE orders.order_num = orderitems.order_num AND orders.cust_id = customers.cust_id AND orderitems.quantity >= 100
GROUP BY
customers.cust_name,
orders.order_num,
orderitems.quantity;
SELECT cust_name,
orders.order_num
FROM COO
WHERE quantity >= 100
CREATE VIEW COO AS
SELECT customers.cust_name,
orders.order_num ,
orderitems.quantity,
SUM(orderitems.item_price* orderitems.quantity) AS OrderTotal
FROM customers, orders,orderitems
WHERE orders.order_num = orderitems.order_num AND orders.cust_id = customers.cust_id AND orderitems.quantity >= 100
GROUP BY
customers.cust_name,
orders.order_num,
orderitems.quantity;
SELECT * FROM coo
WHERE cust_name = 'Village Toys'
SELECT CONCAT( RTRIM(cust_name) , ' (', CAST(RTRIM(order_num) AS CHAR), ')' ) AS name_num
FROM coo
ORDER BY cust_name;
DROP VIEW IF EXISTS coo; --DROP VIEW IF EXISTS 视图名
-- 批量删除 DROP VIEW IF EXISTS 视图名, 视图名;