首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 開發必備:23 條高頻查詢語句完整收藏指南

     編輯:MySQL 綜合教學

MySQL 開發必備:23 條高頻查詢語句完整收藏指南

在日常資料庫開發與維護中,熟練掌握核心查詢語法是提升效率的關鍵。本文系統整理了 23 條 MySQL 高頻查詢語句,涵蓋數值、字串、日期、邏輯、分頁、統計、分組等核心場景,並附帶關鍵注意事項與最佳實踐,適合開發者收藏備查。

一、數值型資料查詢

使用比較運算子進行篩選,支援 >、=、<、<>、!=、!>、!<、>=、<= 等謂詞。

SELECT * FROM tb_name WHERE sum > 100;

二、字串查詢與模糊匹配

結合 LIKE 與萬用字元 % 實現前綴、後綴、包含等多種匹配模式。

SELECT * FROM tb_stu WHERE sname = '小劉';
SELECT * FROM tb_stu WHERE sname LIKE '劉%';
SELECT * FROM tb_stu WHERE sname LIKE '%程序員';
SELECT * FROM tb_stu WHERE sname LIKE '%PHP%';

三、日期型資料查詢

不同資料庫對日期字面值的語法有差異,需注意適配:

  • MySQL / SQL Server:WHERE birthday = '2011-04-08'
  • Access:WHERE birthday = #2011-04-08#

四、邏輯型資料查詢

邏輯欄位通常儲存 'T' / 'F',配合 AND、OR、NOT 進行複合條件過濾。

SELECT * FROM tb_name WHERE type = 'T';
SELECT * FROM tb_name WHERE type = 'F';

五、非空資料查詢

使用 <> '' 或 != '' 過濾空字串,並可結合排序。

SELECT * FROM tb_name WHERE address <> '' ORDER BY addtime DESC;

六、變數查詢數值型資料

PHP 變數直接嵌入 SQL 時,數值型欄位無需加引號,引擎會自動轉型。

SELECT * FROM tb_name WHERE id = '$_POST[text]';

七、變數查詢字串型資料

字串模糊查詢需在變數前後加 %,並用單引號包裹整體。

SELECT * FROM tb_name WHERE name LIKE '%$_POST[name]%';

八、查詢前 N 條記錄

LIMIT 0, N 可與 ORDER BY 結合實現靈活分頁。

SELECT * FROM tb_name LIMIT 0, $N;

九、查詢後 N 條記錄

配合 ORDER BY id ASC 取最新插入的 N 筆資料。

SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n;

十、查詢指定位置起始的 N 條記錄

注意 LIMIT offset, count 中 offset 從 0 開始計算。

SELECT * FROM tb_stu ORDER BY id ASC LIMIT $_POST[begin], $n;

十一、統計結果前 N 名

使用別名 total 計算總分並降序取前 N。

SELECT *, (yw+sx+wy) AS total FROM tb_score ORDER BY (yw+sx+wy) DESC LIMIT 0, $num;

十二、指定時間區間查詢

BETWEEN ... AND ... 等價於 >= 起始值 AND <= 終止值。

SELECT * FROM tb_stu WHERE age BETWEEN 0 AND 18;

十三、按月份統計查詢

善用 YEAR()、MONTH()、DAY() 函數提取日期部件。

SELECT * FROM tb_stu WHERE MONTH(date) = '$_POST[date]' ORDER BY date;

十四、大於指定條件查詢

動態參數直接拼接於 WHERE 子句。

SELECT * FROM tb_stu WHERE age > $_POST[age] ORDER BY age;

十五、去重查詢 DISTINCT

必須指定具體欄位名,不可用 *;需配合 WHERE 使用才有實際去重效果。

SELECT DISTINCT column_name FROM table_name WHERE condition;

十六、NOT 與謂詞組合

  • NOT BETWEEN ... AND ... → < 起始值 AND > 終止值
  • IS NOT NULL / IS NULL 判斷空值
  • NOT IN 排除列表值,常用於子查詢

十七、顯示重複記錄及筆數

結合 GROUP BY 與 COUNT(*) 統計重複值。

SELECT name, age, COUNT(*), age FROM tb_stu WHERE age = '19' GROUP BY date;

十八、升序 / 降序排序

預設為 ASC,明確指定 DESC 可提升可讀性。

SELECT column FROM tb_stu WHERE condition ORDER BY column DESC; -- 降序
SELECT column FROM tb_stu WHERE condition ORDER BY column ASC;  -- 升序

十九、多條件複合排序

多欄位排序按聲明順序依次生效,共同限制輸出順序。

SELECT column FROM tb_stu WHERE condition ORDER BY column1 ASC, column2 DESC;

二十、統計結果排序與聚合

SUM() 可配合 ALL(預設)或 DISTINCT 去重求和;GROUP BY 必須置於 ORDER BY 之前。

SELECT name, SUM(price) AS sumprice FROM tb_price GROUP BY name;
SELECT * FROM tb_name ORDER BY mount DESC, price ASC;

二十一、單列分組統計

GROUP BY 欄位需為非聚合欄位,排序寫在分組之後。

SELECT id, name, SUM(price) AS title, date FROM tb_price GROUP BY pid ORDER BY title DESC;

二十二、多列分組統計

多欄位分組邏輯類似,聚合運算可包含運算式。

SELECT id, name, SUM(price*num) AS sumprice FROM tb_price GROUP BY pid ORDER BY sumprice DESC;

二十三、多表分組統計

使用表別名簡化多表關聯聚合查詢。

SELECT a.name, AVG(a.price), b.name, AVG(b.price)
FROM tb_demo058 AS a, tb_demo058_1 AS b
WHERE a.id = b.id GROUP BY b.type;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved