翻譯|使用教程|編輯:李爽夏|2019-02-13 14:05:35.000|閱讀 949 次
概述:本篇文章介紹了如何獲取MySQL中的行數(shù)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
相關(guān)鏈接:
Navicat Premium是一個(gè)可連接多種數(shù)據(jù)庫(kù)的管理工具,它可以讓你以單一程序同時(shí)連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫(kù),讓管理不同類型的數(shù)據(jù)庫(kù)更加的方便。
在MySQL中有幾種獲取行數(shù)的方法。一些數(shù)據(jù)庫(kù)管理產(chǎn)品提供數(shù)據(jù)庫(kù)統(tǒng)計(jì)信息,如表大小,但也可以使用直接的SQL來(lái)完成。在這篇文章中,我們將使用本機(jī)COUNT()函數(shù)來(lái)檢索MySQL數(shù)據(jù)庫(kù)中一個(gè)表或視圖中的行數(shù)。在第2部分中,我們將學(xué)習(xí)如何從多個(gè)表甚至從數(shù)據(jù)庫(kù)中的所有表中獲取行計(jì)數(shù)。
您可能已經(jīng)知道COUNT()函數(shù)返回表中的行數(shù)。但是還有一點(diǎn)要比這個(gè)多,因?yàn)镃OUNT()函數(shù)可以用來(lái)計(jì)算表中的所有行,或者只計(jì)算那些符合特定條件的行。秘密在函數(shù)簽名中,它有幾種形式:COUNT(*)、COUNT(expression)和COUNT(DISTINCT expression)。
在每種情況下,COUNT()都返回一個(gè)BIGINT,該BIGINT包含匹配行的數(shù)量,如果未找到匹配行,則返回零。
要對(duì)表中的所有行進(jìn)行計(jì)數(shù),無(wú)論它們是否包含空值,請(qǐng)使用COUNT(*)。該形式的COUNT()函數(shù)基本上返回由SELECT語(yǔ)句返回的結(jié)果集中的行數(shù)。
SELECT COUNT(*) FROM cities;
像上面這樣的語(yǔ)句,在沒(méi)有WHERE子句或附加列的情況下調(diào)用COUNT(*)函數(shù),將在MyISAM表上執(zhí)行得非???,因?yàn)樾袛?shù)存儲(chǔ)在information_schema數(shù)據(jù)庫(kù)的Tables表的Table_Rows列中。
對(duì)于事務(wù)性存儲(chǔ)引擎(如InnoDB),存儲(chǔ)精確的行計(jì)數(shù)是有問(wèn)題的,因?yàn)镮nnoDB不在表中保留行的內(nèi)部計(jì)數(shù)。如果是這樣,并發(fā)事務(wù)可能會(huì)同時(shí)“看到”不同數(shù)量的行。因此,SELECT COUNT(*)語(yǔ)句只對(duì)當(dāng)前事務(wù)可見(jiàn)的行進(jìn)行計(jì)數(shù)。這意味著,在繁重的工作負(fù)載期間使用COUNT(*) 運(yùn)行查詢可能會(huì)導(dǎo)致數(shù)字稍微不準(zhǔn)確。
不向COUNT()傳遞任何內(nèi)容將執(zhí)行函數(shù)的COUNT(expr)版本,但sans參數(shù)除外。這樣調(diào)用COUNT()只返回不包含空值的行。例如,假設(shè)我們有一個(gè)名為code_values的簡(jiǎn)單表:
code_values +-------+ | code | +-------+ | 1 | +-------+ | | +-------+ | | +-------+ | 4 | +-------+
從表中選擇COUNT()將返回2,即使有4行:
SELECT COUNT(*) FROM code_values; +---------+ | COUNT() | +---------+ | 2 | +---------+
請(qǐng)注意,很少使用此版本的COUNT()函數(shù),因?yàn)樵谝?guī)范化的數(shù)據(jù)庫(kù)中,空行不應(yīng)該是問(wèn)題,這種情況只有在表沒(méi)有主鍵時(shí)才會(huì)發(fā)生。在大多數(shù)情況下,COUNT(*)都可以正常工作。
當(dāng)然,COUNT(expr)確實(shí)接受正確的表達(dá)式。下面是另一個(gè)同樣獲取空行和非空行的查詢:
SELECT COUNT(IFNULL(code, 1)) FROM code_values;
COUNT函數(shù)的COUNT(expr)版本還接受單個(gè)列名,其效果是COUNT(column_name)將返回column_name不為空的記錄數(shù)。因此,以下SELECT查詢將獲取描述列包含非空值的行數(shù):
SELECT COUNT(description) FROM widgets;
在第2部分中,我們將學(xué)習(xí)如何使用COUNT(DISTINCT expression)簽名以及如何從多個(gè)表中獲取行計(jì)數(shù)。
購(gòu)買Navicat Premium正版授權(quán),請(qǐng)點(diǎn)擊“”喲!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn