《MySQL查詢知識點》

基本查詢

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 BYORDER 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關鍵字的子查詢

anysome關鍵字是同義詞,表示滿足其中任一條件,他們允許創建一個表達式對

子查詢的返回值列表進行比較,只要滿足內層子查詢中任何一個比較條件,就返回一個結果

作爲外層查詢條件

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 '正則表達式';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章