派生表 简单了解和定义

派生表的定义

派生表是在外部查询的FROM子句中定义的,只要外部查询一结束,派生表也就不存在了。

派生表的作用

派生表可以简化查询,避免使用临时表。相比手动生成临时表性能更优越。派生表与其他表一样出现在查询的FROM子句中。
例如:

SELECT * FROM ( SELECT * FROM Customers WHERE 城市='广州' ) Cus

其中Cus就是派生表

派生表的特征

● 所有列必须要有名称,出现无列名的要重命名
● 列名称必须是要唯一,相同名称肯定是不允许的
● 不允许使用ORDER BY(除非指定了TOP)
注意:派生表是一张虚表,在数据库中并不存在,是我们自己创建的,目的主要是为了缩小数据的查找范围,提高查询效率。

派生表嵌套

如果需要用一个本身就引用了某个派生表的查询,去定义另一个派生表,最终得到的就是嵌套派生表。
例子:查询每年处理客户数超过70的订单年度和每年所处理的客户数量。

方法一:不使用派生表
SELECT  YEAR(orderdate) AS Orderyear,  
COUNT(DISTINCT custid) AS Numcusts FROM Sales.Orders GROUP BY YEAR(Orderdate) 
HAVING COUNT(DISTINCT Custid) > 70;
方法二:使用派生表
SELECT Orderyear, Numcusts 
FROM ( SELECT Orderyear, COUNT(DISTINCT Custid) 
AS Numcusts FROM
( SELECT YEAR(Orderyear) AS Orderyear, 
Custid FROM Sales.Orders) AS D1 GROUP BY Orderyear ) 
AS D2 WHERE Numcusts > 70;
小结

派生表用法比较灵活,主要是执行效率相对比较高,可以提前缩小查询范围。

需要考虑的方向:
如何使用派生表来简化复杂查询

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值