基本查詢
SELECT 後面接字段 FROM表名
單表查詢
* 匹配所有的的字段
SELECT * FROM 表名
查詢指定字段
SELECT 字段1 FROM表名;
查詢指定記錄
SELECT 字段1,字段2
FROM 表名
WHERE 條件;
帶IN關鍵字的查詢
IN關鍵字表示必須滿足IN條件缺一不可
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 in (條件1,條件2)
ORDER BY 字段;
帶NOT來檢索不在條件範圍的的記錄
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 NOT IN (條件1,條件2)
ORDER BY 字段;
帶BETWEEN AND的範圍查詢
表示在兩個條件範圍中間的查詢
SELECT 字段1,字段2
FROM 表名
WHERE 字段 BETWEEN條件1 AND條件2;
帶LIKE的字符匹配查詢
LIKE後面匹配任何%匹配所有_表示一個
SELECT 字段1,字段2
FROM 表名
WHERE 字段 LIKE '(字符)%(字符)';
查詢空值
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 IS NULL;
查詢不爲空值
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 IS NOT NULL;
帶AND的多條件查詢
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 條件 AND條件;
帶OR的多條件查詢
表示只要滿足其中一個條件就可以了
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 條件 OR條件;
查詢結果不重複
SELECT DISTINCT 字段 FROM表名;
對查詢結構進行排序
SELECT 字段
FROM 表名
ORDER BY 字段;
多列排序
SELECT 字段1,字段2
FROM 表名
ORDER BY 字段1,字段2;
指定方向排序
降序排序
SELECT 字段1,字段2
FROM 表名
ORDER BY 字段 DESC;
升序排序
SELECT 字段1,字段2
FROM 表名
ORDER BY 字段 ASC;
創建分組
SELECT 字段,COUNT(*) AS別名
FROM 表名
GROUP BY 字段;
使用HAVING過濾分組
SELECT 字段, GROUP_CONCAT(字段) AS別名
FROM 表名
GROUP BY 字段 HAVING COUNT(字段)條件;
使用WITH ROLLUP關鍵字之後,在所有的查詢的分組記錄之後增加一條記錄
該記錄計算查詢出的所有記錄的總和,即統計記錄數量
SELECT 字段,COUNT(*) AS別名
FROM 表名
GROUP BY 字段 WITH ROLLUP;
多字段分組
SELECT *
FROM 表名
GROUP BY 字段,字段;
GROUP BY和ORDER BY一起使用
SELECT 字段, SUM(表名* 字段) AS別名
FROM 表名
GROUP BY 字段
HAVING SUM(表名*字段)條件;
使用LIMIT限制查詢結果的數量
使用limit查詢第一個參數從0開始第二個從1開始比如查詢查詢從第4條開始後面的3條
SELECT * FROM 表名 LIMIT 3,3;
使用聚合函數
AVG();返回某列的平均值
COUNT();返回某列的行數
MAX();返回某列的最大值
MIN();返回某列的最小值
SUM();返回某列的值得和
使用COUNT()函數
SELECT COUNT(*) AS 別名
FROM 表名;
使用SUM()函數
SELECT SUM(字段) AS別名
FROM 表名
WHERE 字段 條件;
使用AVG()函數
SELECT AVG(字段) AS別名
FROM 表名
WHERE 字段 條件;
使用MAX()函數
SELECT MAX(字段) AS別名
FROM 表名;
使用MIN()函數
SELECT MIN(字段) AS別名
FROM 表名;
使用連接查詢
內連接查詢
SELECT 表名.字段1,字段2,字段3,字段4
FROM 表名 INNER JOIN表名
ON 表名.字段= 表名.字段;
左連接查詢LEFT JOIN返回包括左表中的所有記錄和右表中連接字段相等的記錄
SELECT 表名.字段,表名.字段
FROM 表名 LEFT OUTER JOIN表名
ON 表名.字段= 表名.字段;
右連接查詢RIGHT JOIN返回包括右表中的所有記錄和左表中連接字段相等的記錄
SELECT 表名.字段,表名.字段
FROM 表名 RIGHT OUTER JOIN表名
ON 表名.字段= 表名.字段;
子查詢
帶ANY,SOME關鍵字的子查詢
any,some關鍵字是同義詞,表示滿足其中任一條件,他們允許創建一個表達式對
子查詢的返回值列表進行比較,只要滿足內層子查詢中任何一個比較條件,就返回一個結果
作爲外層查詢條件
SELECT 字段 FROM表名 WHERE條件 ANY
(SELECT 字段 FROM表名);
SELECT 字段 FROM表名 WHERE條件 SOME
(SELECT 字段 FROM表名);
帶ALL關鍵字的子查詢
使用ALL時需要滿足所有內層查詢的條件
SELECT 字段 FROM表名 WHERE條件 ALL
(SELECT 字段 FROM表名);
帶EXISTS關鍵字的子查詢
EXISTS關鍵字後面的參數是一個任意的子查詢,系統對子查詢進行運算
以判斷它是否返回行,如果至少返回一行,那麼EXISTS的結果爲true,此時外層
查詢語句將進行查詢,如果子查詢沒有返回任何行,那麼EXISTS的結果爲false,
此時外層語句將不進行查詢
SELECT * FROM 表名
WHERE 字段>條件AND EXISTS
(SELECT 字段 FROM表名 WHERE條件);
帶IN關鍵字的子查詢
IN關鍵字進行子查詢時,內層查詢語句僅僅返回一個數據列,這個數據列裏的值將
提供給外層查詢語句進行比較操作
SELECT 字段 FROM表名 WHERE字段 IN
(SELECT 字段 FROM表名 WHERE條件);
合併查詢結果
利用UNION關鍵字,或者NUION ALL關鍵字分隔
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 條件
UNION ALL
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 條件
使用AS關鍵字爲表取別名
SELECT * FROM 表名 AS別名
WHERE 表名.字段 條件;
使用REGEXP關鍵字指定正則表達式的字符匹配
^匹配文本的開始
$匹配文本的結束
.匹配任何單個字符
*匹配零個或者多個在前面的字符
+匹配前面的字符1次或者多次
|匹配左邊的條件或者右邊的條件
[]只匹配其中的任何一個字符
SELECT * FROM 表名 WHERE字段 REGEXP '正則表達式';