我在这里提到的是基本关系代数运算符。
在我看来,使用选择运算符可以完成项目运算符能够完成的一切操作。
我不知道是否存在我所忽略的差异或某种细微差别。
我在这里提到的是基本关系代数运算符。
在我看来,使用选择运算符可以完成项目运算符能够完成的一切操作。
我不知道是否存在我所忽略的差异或某种细微差别。
PROJECT 消除列,而 SELECT 消除行。
选择操作:此操作用于从表(关系)中选择满足给定逻辑的行,该逻辑称为谓词
。谓词是用户定义的条件,用于选择用户所需的行。
投影操作:如果用户只对选择表(关系)的一些属性值感兴趣,而不是选择所有属性,则应使用PROJECT
操作。
了解更多:关系代数及其运算
select field1,field2 from table1 where field1 = 'Value';
是关系代数中投影和选择操作的结合。
项目不是一个陈述句,而是选择语句的能力。 选择语句具有三种能力,它们是选择(Selection)、投影(Projection)和连接(Join)。选择能力-检索满足给定查询的行。投影能力-选择满足给定查询的列。连接能力-连接两个或多个表。
Project
会影响表中的列,而 Select
影响行。另一方面,Project
用于选择具有特定属性的列,而不是选择所有列数据。
选择操作用于从关系中选择满足选择条件的元组子集。它过滤掉满足条件的元组。选择操作可以被视为水平分区成两个元组集,满足条件的元组被选中,不满足条件的元组被丢弃。 sigma(R) 投影操作用于从关系中选择满足选择条件的属性。它仅过滤出满足条件的元组。投影操作可以被视为垂直分区成两部分,满足条件的部分被选中,其他部分被丢弃。 Π(R) 属性列表是一个属性数。
从具有某些条件的关系中选择提取行,并且从具有或没有某些条件的关系中投影提取特定数量的属性/列。
区别在于关系代数中,投影作用于列,选择作用于行。然而,在查询语法中,选择是使用的术语。没有投影这样的查询。假设有一个名为“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;)。这个查询既是一个选择,也是一个投影。
select 只改变结果表的基数,而 project 则同时改变关系的度和基数。