国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL中的聚合函數(shù)如何用

2024-07-24 12:33:51
字體:
供稿:網(wǎng)友
  MySQL聚合函數(shù)和分頁查詢
  我們在之前了解到了 SQL 單行函數(shù)。實際上 SQL 函數(shù)還有一類,叫做聚合(或聚集、分組)函數(shù),它是對一組數(shù)據(jù)進(jìn)行匯總的函數(shù),輸入的是一組數(shù)據(jù)的集合,輸出的是單個值。
  
   VG和SUM函數(shù)
  可以對數(shù)值型數(shù)據(jù)使用AVG 和 SUM 函數(shù)。
 
  SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)
  FROM   employees
  WHERE  job_id LIKE '%REP%';
  1.2 MIN和MAX函數(shù)
  可以對任意數(shù)據(jù)類型的數(shù)據(jù)使用 MIN 和 MAX 函數(shù)。
 
  SELECT MIN(hire_date), MAX(hire_date)
  FROM employees;
  1.3 COUNT函數(shù)
  COUNT(*)返回表中記錄總數(shù),適用于任意數(shù)據(jù)類型。
  SELECT COUNT(*)
  FROM   employees
  WHERE  department_id = 50;
  COUNT(expr) 返回expr不為空的記錄總數(shù)。
  SELECT COUNT(commission_pct)
  FROM   employees
  WHERE  department_id = 50; //忽略了Null值
  計算表中有多少條記錄
 
  方式1:count(*)
  方式2:count(1)
  方式3:count(某具體字段),但是因為忽略了null值,所以不一定對
  問題:用count(*),count(1),count(列名)誰好呢?
 
  其實,對于MyISAM引擎的表是沒有區(qū)別的。這種引擎內(nèi)部有一計數(shù)器在維護(hù)著行數(shù),但是COUNT(*)的效率略高
 
  Innodb引擎的表用count(*),count(1)直接讀行數(shù),復(fù)雜度是O(n),因為innodb真的要去數(shù)一遍。但好于具體的count(列名)。
 
  問題:能不能使用count(列名)替換count(*)?
 
  不要使用 count(列名)來替代 count(*),count(*)是 SQL92 定義的標(biāo)準(zhǔn)統(tǒng)計行數(shù)的語法,跟數(shù)據(jù)庫無關(guān),跟 NULL 和非 NULL 無關(guān)。
 
  說明:count(*)會統(tǒng)計值為 NULL 的行,而 count(列名)不會統(tǒng)計此列為 NULL 值的行。

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 防城港市| 威海市| 延安市| 平利县| 伊宁市| 乌兰县| 虞城县| 横峰县| 海口市| 大厂| 南昌县| 北碚区| 澄城县| 三穗县| 汝城县| 蓬莱市| 瓦房店市| 措美县| 都匀市| 曲沃县| 怀化市| 松原市| 浦北县| 玉山县| 平邑县| 吴忠市| 西安市| 吉木萨尔县| 南岸区| 石首市| 广元市| 日土县| 乌苏市| 陆丰市| 苍南县| 通化县| 枝江市| 驻马店市| 灵武市| 桃园市| 探索|