Dbms
COUNT
會丟棄重複項嗎?
我的教授教我這個 SQL 語句:
SELECT COUNT(length) FROM product
將返回
2
以下數據集:product |id | length | code | |-------------------| | 1 | 11 | X00 | | 2 | 11 | C02 | | 3 | 40 | A31 |
COUNT
她通過說不計算重複來證明這一點。我不同意。在嘗試了很多 DBMS 之後,我從來沒有找到一個有這種行為的。這樣的 DBMS 存在嗎?
COUNT
確實計算了我知道的所有 DBMS 中的重複項,但是。教授有什麼理由教這種行為
是的,這是有原因的。在最初的關係理論(所有現代關係 DBMS 的基礎)中,關係是這個詞的數學意義上的集合。這意味著任何關係都不能包含重複項,包括所有過渡關係,而不僅僅是您的“表”。
遵循這個原則,您可能會說
SELECT length FROM product
已經只包含兩行,因此相應的COUNT
返回2
,而不是3
。例如,在Rel DBMS 中,使用問題和Tutorial D語法中給出的關係:
SUMMARIZE product {length} BY {}: {c := COUNT()}
給出: