暑期自學 Day 10 | 資料庫 (三)- DQL

Borris發表於2020-05-22

DQL

排序查詢

  • ... order by keyword ASC/DESC
    • 如果升/降序不寫,預設升序

聚合函式

  • 將一列作為一個整體,做縱向計算
  • 會排除 null 值
    • 解決:使用 IFNULL() 函式或選擇非空列
  • count 計算個數
    • SELECT COUNT(english) FROM stuSELECT COUNT(IFNULL(english, 0)) FROM stu 空設為0
  • max, min, sum, avg 使用方法同 COUNT

分組查詢

  • group by 分組欄位
  • 根據分組欄位來查詢資料,如根據性別分組,那麼男女就被分為兩組。
  • 兩種限定條件的語法:where ...having ...
    • 區別:
      • where 在分組前限定,不滿足條件不參與分組;having 在分組後限定,如果不滿足分組不會被查詢
      • where 後不可使用聚合函式判斷,having 則可以。

分頁查詢

  • limit 資料開始索引, 查詢條數
    • select * from stu limit 0, 3; 從 0 開始查,查三條記錄

基礎查詢

  • SELECT col1, col2, ... colN FROM t_table;
  • 去除重複資料:使用 DISTINCT 關鍵字
    • SELECT DISTINCT col1 FROM t_table;
  • 查詢某兩列之和:
    • SELECT name, (math + english) FROM t_table
    • 如果有一列資料是 null,運算結果為 null
  • 為某一列起別名: 使用 AS 關鍵字
    • SELECT name, (math + english) AS total FROM t_table

條件查詢

  • where
  • 運算子 >, <, =, >=, !=, <>, and/&&, or/||, not/|
  • BETWEEN … AND
    • ... BETWEEN 20 AND 30;
  • IN
    • ... WHERE age IN (22, 18, 25);
  • IS / IS NOT: 判斷是否是 NULL
    • ... IS NULL

模糊查詢

  • LIKE
    • _ 下劃線:單個任意字元
    • % 百分號:多個任意字元
    • 查詢含有某個字元的資料:
      • ... WHERE name LIKE '%馬%'; // 查詢含有馬的名字
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章