39

我在这里指的是基本的关系代数运算符。
在我看来,可以用 project 完成的所有事情都可以用 select 来完成。

我不知道是否有我错过的差异或某种细微差别。

4

10 回答 10

63

PROJECT消除列,而SELECT消除行。

于 2013-07-28T02:23:36.730 回答
60

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

项目操作:如果用户有兴趣选择几个属性的值,而不是选择表(关系)的所有属性,那么应该去PROJECT操作。

查看更多:关系代数及其运算

于 2011-03-25T12:49:27.770 回答
28

在关系代数中,“选择”和“投影”是不同的操作,但 SQL SELECT 将这些操作组合在一个语句中。

Select 检索关系(表)中“谓词”部分(WHERE 子句)中的条件成立的元组(行)。

Project 检索指定的属性(列)。

以下 SQL SELECT 查询:

select field1,field2 from table1 where field1 = 'Value';

是关系代数的投影和选择运算的组合。

于 2014-02-28T03:40:27.547 回答
10

项目不是声明。这是 select 语句的能力。Select 语句具有三种功能。它们是选择、投影、加入。选择——它检索给定查询所满足的行。投影——它选择给定查询满足的列。join-it 连接两个或多个表

于 2015-06-06T04:41:09.390 回答
1

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

于 2015-04-11T02:56:03.303 回答
1

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

于 2016-08-13T19:47:01.993 回答
0

选择从具有某些条件的关系中提取行,项目从具有或不具有某些条件的关系中提取特定数量的属性/列。

于 2017-07-29T02:09:17.653 回答
0

关系代数中的项目运算符 (π) 和 SQL 中的 SELECT 关键字的区别在于,如果结果表/集有不止一次出现相同的元组,那么 π 将只返回其中一个,而 SQL SELECT 将返回全部。

于 2018-02-15T18:01:25.750 回答
0

select 只是改变了结果表的基数,但 project 确实改变了关系度和基数。

于 2018-02-19T20:40:00.537 回答
0

不同之处在于项目影响列和选择影响行的关系代数。但是在查询语法中,select 就是这个词。没有像项目这样的查询。假设有一个名为 users 的表,有数十万条记录(行),并且该表有 6 个字段(userID、Fname、Lname、age、pword、salary)。假设我们要限制对敏感数据(用户 ID、密码和薪水)的访问,并限制要访问的数据量。在 mysql maria DB 中,我们从我们发出的视图中创建如下视图( Create view user1 as select Fname,Lname, age from users limit 100;)(select Fname from users1;)。此查询既是选择又是项目

于 2018-02-27T08:47:00.443 回答