MySQL<表單&集合查詢>
表單查詢
簡單查詢
SELECT語句
查詢所有字段
指定所有字段:select 字段名1,字段名2,...from 表名;
select * from 表名;
查詢指定字段
select 字段名1,字段名2,...from 表名;
按條件查詢
帶關系運算符的查詢
SELECT 字段名1,字段名2,……
FROM 表名
WHERE 條件表達式;
帶IN關鍵字的查詢
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名 [NOT] IN (元素1,元素2,……);
帶BETWEEN AND關鍵字的查詢
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;
空值查詢
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名IS [NOT] NULL;
帶DISTINCT關鍵字的查詢
過濾掉重復值:select distinct 字段名 from 表名;
作用多個字段:select distinct 字段名1,字段名2,... from 表名;
帶LIKE關鍵字的查詢
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] LIKE ‘匹配字符串‘;
百分號(%)通配符
可以匹配任意長度的字符串,包括空字符串
下劃線(_)通配符
下劃線通配符只匹配單個字符,如果要匹配多個字符,
需要使用多個下劃線通配符。
帶AND關鍵字的多條件查詢
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 條件表達式1 […… AND 條件表達式n];
帶OR關鍵字的多條件查詢
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 條件表達式1 OR […… OR 條件表達式n];
OR和AND關鍵字一起使用的情況
AND的優先級高於OR,因此當兩者在一起使用時,應該先運算AND兩邊的條件表達式,再運算OR兩邊的條件表達式。
高級查詢
聚合函數
一共有多少條記錄:select count(*) from 表名;
某個字段所有值總和:select sum(字段名) from 表名;
某個字段所有值平均數:select avg(字段名) from student;
某個字段的最大值:select max(字段名) from student;
某個字段的最小值:select min(字段名) from student;
對查詢結果排序
SELECT 字段名1,字段名2,……
FROM 表名
ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……;
需要註意的是,在按照指定字段進行升序排列時,如果某條記錄的字段值為NULL,則這條記錄會在第一條顯示,這是因為NULL值可以被認為是最小值
對字段值進行分組查詢
SELECT 字段名1,字段名2,……
FROM 表名
GROUP BY 字段名1,字段名2,……[HAVING 條件表達式];
三種使用情況
單獨使用group by分組:select * from student group by gender;
查詢的是每個分組中的一條記錄。
與聚合函數:select(*),gender from student group by gender;
可以統計出某個或者某些字段在一個分組中的最大值、最小值、平均值等等。
與having:select sum(grade),gender from student group by gender having sum(grade)<300;
HAVING和WHERE都用於設置條件對查詢結果進行過濾。兩者區別在於HAVING後可以跟聚合函數,而WHERE不能。
使用LIMIT限制查詢結果的數量
SELECT 字段名1,字段名2,……
FROM 表名
LIMIT [OFFSET,] 記錄數;
前四條:select * from student limit 4;
第5~8以grade從高到低排序:select * from student order by grade desc limit 4,4;
函數(列表)
包括數學函數、字符串函數、日期和時間函數、條件判斷函數、加密函數等等。可以簡化用戶對數據的操作
為表取別名
select * from 表名 [as] 別名;
為字段取別名
select 字段名 [as] 別名 [,字段名 [as] 別名,...] from 表名;
集合查詢
集函數包括COUNT、MIN、MAX、SUM和AVG。
COUNT計算表達式中非空值的數量,如果使用DISTICE關鍵字則刪除重復值。如果使用COUNT(*),則計算所有行數
MIN計算表達式最小值。忽略表達式中的空值
MAX計算表達式最大值。忽略表達式中的空值
SUM計算表達式所有值的和。忽略表達式中的空值
AVG計算表達式的平均值。忽略表達式中空值
轉換函數有三個:TO_CHAR、TO_DATE和TO_NUMBER。
字符函數主要包括LOWER(全小寫)、UPPER(全大寫)、INITCAP(首字母大寫)、CONCAT(連接字符串)、SUBSTR(取子串)、LENGTH(獲取字符串長度)等。
MySQL<表單&集合查詢>