投影和选择是什么?

134

投影和选择有什么区别?是这样的:

  • 投影 --> 用于选择表格的列; 和
  • 选择 ---> 用于选择表格的行吗?

那么,投影和选择分别对应垂直和水平切片吗?

4个回答

242

没错。

投影是指选择查询应返回哪些列(或表达式)。

选择是指要返回哪些行。

如果查询是

select a, b, c from foobar where x=3;
然后,"a,b,c"是投影部分,"where x=3"是选择部分。

11
确实是一个清晰的解释,但我发现 SQL 的这个方面令人困惑/误导:SELECT 子句实际上执行的是投影(而不是选择),而是 WHERE 子句实际上执行的是选择 - flow2k
9
@flow2k 观察得很好,但不要把责任推到我身上;-) - Erich Kitzmueller
2
@ErichKitzmueller 哈 - 请放心,我没有这样的意图;有时候我发现理解/接受定义或语法中的这些微妙之处,会让我更好地记住它。 - flow2k

15

简单来说,PROJECTION 处理的是列的消除或选择,而SELECTION处理的是行的消除或选择。


12

投影和选择是关系代数中的两个一元运算符,在关系型数据库管理系统中具有实际应用。

实际上,投影意味着从表中选择特定的列(属性),而选择意味着过滤行(元组)。此外,对于传统表格来说,投影和选择可以被称为垂直和水平切片或过滤。

维基百科提供了更正式的定义和示例,可作为进一步学习关系代数的参考:


这实际上有助于使术语变得更加清晰。选择是从行集合中选择子集。如果您将N列值视为N维空间中的一个点,则向下(正交地)投影到仅K维会消除一些列值,从而为每行生成K组分量元组。 - karmakaze

9

投影:在select子句中键入的任何内容,即“列列表”、“*”或“表达式”,都将成为投影。

选择:我们对这些列应用什么类型的条件,即获取属于选择的记录。

例如:

  SELECT empno,ename,dno,job from Emp 
     WHERE job='CLERK'; 

在上面的查询中,“empno,ename,dno,job”这些列属于投影,“where job ='clerk'”属于选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接