数仓SQL投影介绍
目录
- 1. 基本定义
- 2.与笛卡尔积的区别
- 3. 投影的特性
- 4. 应用场景
- 5. 与关系代数的对应
- 总结
在SQL查询中, 投影(Projection) 是一个核心概念,对应于
SELECT
语句的作用。它指的是
从表中选择特定的列(字段)进行输出,而不是返回整行数据。以下是投影的关键点:
1. 基本定义
- 投影 是从表中选取部分列的操作,类似于数学中的函数映射,将原始数据映射到选定的列上。
- 在SQL中,通过
SELECT
子句指定需要的列。例如:
这里选择了SELECT 列1, 列2 FROM 表名;
列1
和列2
,即对原始表进行了投影。
2.与笛卡尔积的区别
- 笛卡尔积(Cartesian Product)是多个表中所有可能行的组合(如
FROM 表A, 表B
),而 投影 是从单个表或组合后的结果中选择特定列。 - 例如,
SELECT A.列1, B.列2 FROM 表A, 表B
中,投影操作选择了表A
的列1
和表B
的列2
。
3. 投影的特性
- 去重:默认情况下,SQL的
SELECT
会去重(除非使用SELECT DISTINCT
显式指定去重)。 - 别名:可以为输出的列指定别名(Alias),方便结果解读:
SELECT 列1 AS 新列名 FROM 表名;
- 计算列:支持对列进行计算或函数操作,例如:
SELECT 列1 * 2 AS 双倍值 FROM 表名;
4. 应用场景
- 减少数据量:仅返回需要的列,避免传输不必要的数据。
- 数据重组:通过计算或函数生成新列(如日期格式化、数值计算)。
- 结果简化:在复杂查询中,通过投影聚焦关键信息。
5. 与关系代数的对应
在关系代数中,投影操作用希腊字母 Π(Pi)表示,例如:
Π_{列1,列2}(表名)
这与SQL的 SELECT 列1, 列2 FROM 表名
完全对应。
总结
投影 是SQL查询中选择特定列的核心操作,通过 SELECT
实现,用于简化结果集、优化性能,并支持列的计算和别名定义。它是数据查询中不可或缺的一步,尤其在处理宽表(列较多的表)时能显著提升效率。