簡單查詢
查詢語句核心語法
SELECT [DISTINCT] *|{字段名1, 字段名2, 字段名3,……} FROM 表名 [WHERE 條件表達式1] [GROUP BY 字段名 [HAVING 條件表達式2]] [ORDER BY 字段名 [ASC|DESC]] [LIMIT [OFFSET] 記錄數
- “字段1,字段2…”表示從表中查詢的指定字段,星號(“*”)通配符表示表中所有字段,兩者為互斥關系,任選其一。“DISTINCT”是可選參數,用於剔除查詢結果中重復的數據
-
from 表示從指定的表中查詢數據
-
“WHERE”是可選參數,用於指定查詢條件
-
“GROUP BY”是可選參數,用於將查詢結果按照指定字段進行分組,“HAVING”也是可選參數,用於對分組后的結果進行過濾。
- “ORDER BY”是可選參數,用於將查詢結果按照指定字段進行排序。排序方式由參數ASC或DESC控制,其中ASC表示按升序進行排列,DESC表示按降序進行排列。如果不指定參數,默認為升序排列
-
“LIMIT”是可選參數,用於限制查詢結果的數量。LIMIT后面可以跟2個參數,第一個參數“OFFSET”表示偏移量,如果偏移量為0則從查詢結果的第一條記錄開始…以此類推。如果不指定OFFSET,其默認值為0。第二個參數“記錄數”表示返回查詢記錄的條數。
查詢student表中的所有字段
查詢student表中name字段和gender字段的數據(查詢指定屬性)
PS: 指定查詢對象 需要用 where 來限制 相關的條件表達式如下
例如:
查詢name為“wusong”的姓名和 性別
帶IN關鍵字的查詢
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名 [NOT] IN (元素1,元素2,……)
例如:
查詢student表中id值為1、2、3的id、成績 、姓名、性別
帶BETWEEN AND關鍵字的查詢
—判斷某個字段的值是否在指定的范圍之內
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2
例如:
查詢student表中id值在2和5之間的學生id和姓名
空值查詢
—判斷某些列是否有NULL值
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名IS [NOT] NULL
例:
查詢student表中gender為空值的id、姓名、成績、性別
帶DISTINCT關鍵字的查詢
—去重
SELECT DISTINCT 字段名 FROM 表名;
例:
查詢student表中gender字段的值,查詢記錄不能重復
DISTINCT關鍵字作用於多個字段
SELECT DISTINCT 字段名1,字段名2,……
FROM 表名;
在上面的語法格式中,只有DISTINCT關鍵字后指定的多個字段值都相同,才會被認作是重復記錄。
帶LIKE關鍵字的查詢
—判斷兩個字符串是否相匹配
SELECT *|{字段名1,字段名2,……} FROM 表名 WHERE 字段名 [NOT] LIKE '匹配字符串';
例:
查找student表中name字段值包含字符“y”的學生id和姓名
下划線(_)通配符
下划線通配符只匹配單個字符,如果要匹配多個字符, 需要使用多個下划線通配符。
PS: 漢字占兩個
使用百分號和下划線通配符進行查詢操作
百分號和下划線是通配符,它們在通配字符串中有特殊含義,
因此,如果要匹配字符串中的百分號和下划線,就需要在通配字符串中使用右斜線(“\”)對百分號和下划線進行轉義,
例如,“\%”匹配百分號字面值,“\_”匹配下划線字面值。
名字中含有 % 的
帶AND關鍵字的多條件查詢
-----連接兩個或者多個查詢條件
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 條件表達式1 […… AND 條件表達式n];
例:
查找id >5 的女生
帶OR關鍵字的多條件查詢
— 記錄滿足任意一個條件即被查出
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 條件表達式1 OR […… OR 條件表達式n];
例
查詢student表中id字段值小於3或者gender字段值為“女”的id、姓名、性別
OR和AND關鍵字一起使用的情況
AND的優先級高於OR,因此當兩者在一起使用時,應該先運算AND兩邊的條件表達式,再運算OR兩邊的條件表達式。
使用LIMIT限制查詢結果的數量
SELECT 字段名1,字段名2,……
FROM 表名
LIMIT [OFFSET,] 記錄數
LIMIT:后面可以跟2個參數,“OFFSET”:為可選值,表示偏移量,如果偏移量為0則從查詢結果的第一條記錄開始…以此類推,如果不指定其默認值為0。
“記錄數”:表示返回查詢記錄的條數。
例:
查詢student表中grade字段值從第5位到第8位的學生。
高級查詢
-
- COUNT()函數用來統計記錄的條數
SELECT COUNT(*) FROM 表名
- SUM()是求和函數,用於求出表中某個字段所有值的總和
SELECT SUM(字段名) FROM 表名;
- AVG()函數用於求出某個字段所有值的平均值
SELECT AVG(字段名) FROM student;
- MAX()函數是求最大值的函數,用於求出某個字段的最大值
SELECT MAX(字段名) FROM student;
- MIN()函數是求最小值的函數,用於求出某個字段的最小值
SELECT MIN(grade) FROM student;
- ORDER BY對查詢結果進行排序
SELECT 字段名1,字段名2,…… FROM 表名 ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……
PS: NULL 會被認為最小, 建議and 上非空檢測
- GROUP BY對字段值進行分組查詢
SELECT 字段名1,字段名2,…… FROM 表名 GROUP BY 字段名1,字段名2,……[HAVING 條件表達式];
- COUNT()函數用來統計記錄的條數
學習不易,諸君共勉