选择和投影操作有什么区别?

44

我在这里提到的是基本关系代数运算符。
在我看来,使用选择运算符可以完成项目运算符能够完成的一切操作。

我不知道是否存在我所忽略的差异或某种细微差别。


7
Herbalessence的答案完全正确,但基本思想是:使用选择运算符指定所需的行,使用投影运算符指定所需的列。 - SáT
3
请注意,此问题涉及关系代数运算符,而不是SQL的SELECT语句。请阅读@EmergeStronger的答案,以便更清楚地了解它们之间的差异。 - shrmn
选择意味着从表中选择一些记录并将其他记录留下。投影意味着从每个记录中选择一些列并将其他列留下。 - Numan Naqshbndi
10个回答

69

PROJECT 消除列,而 SELECT 消除行。


64

选择操作:此操作用于从表(关系)中选择满足给定逻辑的行,该逻辑称为谓词。谓词是用户定义的条件,用于选择用户所需的行。

投影操作:如果用户只对选择表(关系)的一些属性值感兴趣,而不是选择所有属性,则应使用PROJECT操作。

了解更多:关系代数及其运算


31
在关系代数中,“选择(Selection)”和“投影(Projection)”是不同的操作,但是SQL SELECT语句将这两个操作合并为一个单独的语句。
SELECT语句检索关系(表格)中满足"谓词"部分(WHERE子句)条件的元组(行)。
PROJECT操作检索指定的属性(列)。
以下是SQL SELECT查询:
select field1,field2 from table1 where field1 = 'Value';

是关系代数中投影和选择操作的结合。


1
由于gizgok的问题明显是关于SQL的,因此这应该是被接受的答案。 - Bryan

11

项目不是一个陈述句,而是选择语句的能力。 选择语句具有三种能力,它们是选择(Selection)、投影(Projection)和连接(Join)。选择能力-检索满足给定查询的行。投影能力-选择满足给定查询的列。连接能力-连接两个或多个表。


2
提高你的拼写水平,否则会完全改变句子的意思。 - Saurabh Jhunjhunwala

2

Project 会影响表中的列,而 Select 影响行。另一方面,Project 用于选择具有特定属性的列,而不是选择所有列数据。


1

选择操作用于从关系中选择满足选择条件的元组子集。它过滤掉满足条件的元组。选择操作可以被视为水平分区成两个元组集,满足条件的元组被选中,不满足条件的元组被丢弃。 sigma(R) 投影操作用于从关系中选择满足选择条件的属性。它仅过滤出满足条件的元组。投影操作可以被视为垂直分区成两部分,满足条件的部分被选中,其他部分被丢弃。 Π(R) 属性列表是一个属性数。


0

从具有某些条件的关系中选择提取行,并且从具有或没有某些条件的关系中投影提取特定数量的属性/列。


0

区别在于关系代数中,投影作用于列,选择作用于行。然而,在查询语法中,选择是使用的术语。没有投影这样的查询。假设有一个名为“users”的表,该表有成千上万条记录(行),并且该表具有6个字段(userID,Fname,Lname,age,pword,salary)。假设我们想限制对敏感数据(userID、pword和salary)的访问,并限制要访问的数据量。在MySQL Maria DB中,我们创建以下视图(创建用户1的视图,如下所示:select Fname,Lname,age from users limit 100;),从我们的视图中发出(select Fname from users1;)。这个查询既是一个选择,也是一个投影。


0
关系代数中的项目运算符(π)和 SQL 中的 SELECT 关键字之间的区别在于,如果结果表/集具有相同元组的多个出现,则 π 仅返回其中一个,而 SQL SELECT 将返回所有。

0

select 只改变结果表的基数,而 project 则同时改变关系的度和基数。


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