国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 兰溪市| 阿拉尔市| 焉耆| 新晃| 通渭县| 灵石县| 诸暨市| 静乐县| 晋州市| 五指山市| 凌源市| 天镇县| 芜湖县| 巴东县| 丰都县| 苍梧县| 上饶县| 信丰县| 葫芦岛市| 九寨沟县| 五指山市| 汕尾市| 泰州市| 增城市| 陇西县| 侯马市| 娱乐| 宜兰县| 延寿县| 松原市| 贵南县| 新邵县| 高州市| 含山县| 安庆市| 滨海县| 莱芜市| 民权县| 兖州市| 泰兴市| 讷河市|