2016-09-22 53 views
-1

我打掃了我的SQL知識並一直在審查各種教程。其中第一個教程演示瞭如何使用計數表中的行數:SQL語法理論

SELECT COUNT(*) FROM table 

此前雖然,教程演示返回所有從一個表中的行和列的使用:

SELECT * FROM table 

那麼,爲什麼不COUNT(*)返回表中的「單元格」的總數?例如,一個三列五行的表格有十五個「單元格」。 COUNT(*)似乎應該返回十五而不是五。

+5

蘋果是圓的,香蕉是長的。爲什麼不相反呢? Ans:因爲這是他們的方式 – Nabin

+0

因爲'SELECT COUNT(*)'返回行數,(它對行進行計數); *表示*讓數據庫引擎決定這麼做的最佳方式*。 'SELECT *'表示*選擇行中的所有列* - *表示*所有列,而不是單獨給每個列命名*。 IOW,即使他們看起來相似,他們也會做兩件獨立的事情。 'COUNT(*)'是一個函數; 'SELECT *'不是。 –

+0

爲什麼我們需要知道「細胞」的總數? – Prisoner

回答

0

單元格不是很有趣,行數是,要查找單元格,您只需按數字列多個單元格。

SELECT * FROM TABLE將返回所有的行,如果您有1000萬,並且所有您想要的是計數,您不希望獲取所有1000萬行。

0

SELECT COUNT(*)返回行數(它對行進行計數); *意味着讓數據庫引擎決定這樣做的最佳方式。

SELECT *表示選擇行中的所有列 - *表示所有列都沒有單獨命名每個列。

換句話說,即使它們看起來相似,它們也會做兩件獨立的事情。 COUNT(*)是一個函數(你使用它SELECT COUNT(*)); SELECT *不是。