博客 > SQL高级知识:派生表那些事儿
浏览量:1047次评论:0次
作者:锐成网络整理时间:2024-05-17 17:45:54
派生表是SQL中一个非常强大且常用的技术,提供了一种以表格方式展现特定查询结果的方式,可以让我们更灵活地处理数据。本文将介绍SQL派生表定义、作用特征等相关内容。
1、派生表的定义
派生表是在外部查询的FROM子句中定义的,只要外部查询一结束,派生表也就不存在了。
2、派生表的作用
派生表可以简化查询,避免使用临时表。相比手动生成临时表性能更优越。派生表与其他表一样出现在查询的FROM子句中。
例如:
SELECT * FROM (
SELECT * FROM Customers WHERE 城市='广州'
) Cus
其中Cus就是派生表
3、派生表的特征
所有列必须要有名称,出现无列名的要重命名
列名称必须是要唯一,相同名称肯定是不允许的
不允许使用ORDER BY(除非指定了TOP)
派生表必须指定名称,例如:Cus
注意:派生表是一张虚表,在数据库中并不存在,是我们自己创建的,目的主要是为了缩小数据的查找范围,提高查询效率。
4、派生表嵌套
如果需要用一个本身就引用了某个派生表的查询,去定义另一个派生表,最终得到的就是嵌套派生表。
例子:查询每年处理客户数超过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;
嵌套查询看起来非常复杂,嵌套查询也是很容易产生问题的一个方面。在这个例子中,使用嵌套派生表的目的是为了重用列别名。但是,由于嵌套增加了代码的复杂性,所以对于本例考虑使用方案一。
4、派生表与子查询的区别
子查询是指在主查询中使用的内部查询。通过将子查询作为主查询的条件或结果集来获取所需数据,子查询可以出现在很多地方。
在where⼦句中: ⼦查询的结果可⽤作条件筛选时使⽤的值。
在from⼦句中: ⼦查询的结果可充当⼀张表或视图,需要使⽤表别名。
在having⼦句中: ⼦查询的结果可⽤作分组查询再次条件过滤时使⽤的值
在select⼦句中: ⼦查询的结果可充当⼀个字段。仅限⼦查询返回单⾏单列的情况。
1、派生表通常出现在FROM子句后面。
2、派生表通常用于子查询的结果需要多次使用的场景,而子查询可以用于需要临时结果的场景。
3、派生表必须有自己的别名,而子查询一般不需要。
以上就是关于派生表的相关知识了,作为SQL中一个非常实用的功能,派生表可以帮助我们在查询中灵活处理数据。
重要声明:本文来自SQL数据库开发,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。
相关文章推荐
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
2024-08-15 17:22:55
热门工具
标签选择
阅读排行
我的评论
还未登录?点击登录