2011-03-25 103 views
22

我指的是這裏的基本關係代數運算符。
正如我所看到的,所有可以用項目完成的事情都可以通過select來完成。Select和Project Operations之間的區別

我不知道是否有差異或我錯過了某些細微差別。

什麼人@這麼認爲

+4

Herbalessence的答案是完全正確的,但基本思想是:通過選擇操作符指定想要的行,用投影操作符指定所需的列。 – 2011-03-25 18:08:56

+0

+1對於SaT的評論 – 2011-03-26 01:28:17

+0

請注意,這個問題是關於關係代數運算符,而不是SQL的SELECT語句。請閱讀@ EmergeStronger的回答,以更清楚地解釋這些差異。 – shrmn 2015-12-01 01:53:56

回答

37

選擇操作:此操作用於從表中選擇(關係)行指定一個給定的邏輯,這就是所謂的predicate。謂詞是用戶定義的條件,用於選擇用戶選擇的行。

項目操作:如果用戶是有意選擇一些屬性的值,而不是選擇的表(關係)的所有屬性,那麼應該去PROJECT操作。

查看更多:Relational Algebra and its operations

28

項目消除列而選擇消除行。

12

在關係代數中'Selection'和'Projection'是不同的操作,但SQL SELECT將這些操作組合在一個語句中。

Select檢索'predicate'部分(WHERE子句)中的條件爲真的關係(表)中的元組(行)。

項目檢索指定的屬性(列)。

下面的SQL SELECT查詢:

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

是關係代數的兩個投影和選擇操作的組合。

1

選擇操作用於從滿足選擇條件的關係中選擇元組的子集它篩選出滿足條件的那些元組。選擇操作可以被視爲水平分區爲兩組元組 - 這些元組滿足條件並且這些元組不選擇條件被丟棄 西格瑪(R) 投影操作用於從滿足選擇條件的關係中選擇屬性。它只過濾那些滿足條件的元組。投影運算可以被視爲一個垂直分區爲兩部分 - 那些滿足條件被選中的其他部分被丟棄 Π(R) 屬性列表是一系列屬性

6

項目不是聲明。這是選擇語句的能力。 Select語句有三個功能。他們是選擇,投影,加入。選擇 - 它檢索給定查詢滿足的行。 投影 - 它選擇由給定查詢滿足的列。 加入它加入兩個或多個表

+1

改善拼寫,否則它會完全改變句子的含義 – 2015-06-06 04:46:21

1

Project將影響表中的列,而Select影響行。另一方面Project用於選擇具有specefic屬性的列而不是選擇所有列數據

0

選擇從關係中提取行與某些條件和項目從具有或不具有某些關係的關係中提取特定數量的屬性/列條件。

0

關係代數中的項目操作符(π)與SQL中的SELECT關鍵字之間的區別在於,如果生成的表/集具有相同元組的多個出現次數,那麼π將只返回其中的一個,而SQL SELECT將返回全部。

0

選擇只是改變結果表的基數,但項目確實改變關係和基數的程度。

0

不同之處在於關係代數,其中項目影響列並選擇影響行。但是在查詢語法中,select是單詞。沒有像項目這樣的查詢。 假設有一個表名爲用戶成千上萬的記錄(行),表中有6個字段(userID,Fname,Lname,年齡,pword,薪水)。比方說,我們想要限制對敏感數據(用戶ID,pword和薪水)的訪問,並限制訪問的數據量。在mysql maria DB中,我們創建一個視圖,如下所示(創建視圖user1爲選擇Fname,Lname,來自用戶的年齡限制爲100;)從我們的視圖中,我們發佈(從users1;選擇Fname)。這個查詢既是一個選擇項目,也是一個項目

+0

已經有一個非常好的解決方案。 – 2018-02-27 08:51:07