SQL單表查詢語句總結
關於SQL單表查詢語句總結:
一 基礎查詢:
1. SELECT 欄位名.... FROM 表名;
2. SELECT * FROM 表名;
二 條件查詢
(第一個欄位名可以為*,代表從全部資料中查詢)
1. SELECT 欄位名... FROM 表名
WHERE 條件表示式;
2. SELECT 欄位名... FROM 表名
WHERE 條件表示式 AND 條件表示式....;
3. SELECT 欄位名... FROM 表名
WHERE 條件表示式 OR 條件表示式....;
(或者是OR和AND一起靈活使用)
三 關鍵字查詢/精確查詢
(第一個欄位名可以為*,代表從全部資料中查詢)
1. IN或者NOT IN
SELECT 欄位名... FROM 表名
WHERE 欄位名 [NOT] IN (元素....);
元素是限定條件,查詢包含某些元素的資料或者是不包含某些元素的資料;
2. IS NULL 或者 IS NOT NULL
SELECT 欄位名... FROM 表名
WHERE 欄位名 [NOT] IN NULL;
查詢欄位為空或者不為空的資料;
3. BETWEEN AND
SELECT 欄位名... FROM 表名
WHERE 欄位名 [NOT] BETWEEN 值1 AND 值2;
查詢某個欄位的值在或不在某個範圍內的資料;
四 模糊查詢
1. LIKE
SELECT 欄位名... FROM 表名
WHERE 欄位名 [NOT] LIKE ‘匹配字串’;(這個字串可以是一個普通的字串,也可 以是包含百分號(%)和下畫線(_)的通配字串,其中百分號表示任意0~n個字元,下劃 線表示任意一個字元。)
例子:
查詢姓名由5個字母構成的學生的資訊
mysql> SELECT * FROM stu
-> WHERE sname LIKE '_____';
查詢姓名由5個字母構成,並且第5個字母為i的學生的資訊
mysql> SELECT * FROM stu
-> WHERE sname LIKE '____i';
查詢姓名以z開頭的學生的資訊
mysql> SELECT * FROM stu
-> WHERE sname LIKE 'z%';
查詢姓名第二個字母為i的學生的資訊
mysql> SELECT * FROM stu
-> WHERE sname LIKE '_i%';
查詢姓名中包含a的學生的資訊
mysql> SELECT * FROM stu
-> WHERE sname LIKE '%a%';
2. DISTINCT(用於去除重複資料)
SELECT DISTINCT 欄位名 FROM 表名;
例子: 查詢所有員工的月薪,並且去重。
SELECT DISTINCT sal FROM emp;
五 高階查詢
1. 排序查詢
SELECT 欄位.... FROM 表名
ORDER BY 欄位名.... [ASC|DESC];(ORDER BY關鍵字後的欄位名錶示指定排序的欄位, ASC代表按升序排序,DESC代表按降序排序,如果不寫,預設按升序排序)
(如果按多個欄位排序,則優先按ORDER BY後排的靠前的欄位排序)
例子: 查詢所有學生記錄,按年齡升序排序
mysql> SELECT * FROM stu
-> ORDER BY age ASC;
或mysql> SELECT * FROM stu
-> ORDER BY age ASC;
2. 聚合函式
MySQL提供了一系列函式實現資料統計,也稱為聚合函式。
1) COUNT()函式
SELECT COUNT (*|1|列名) FROM 表名;
(該函式有三個可選引數,COUNT(*)是返回行數,包括NULL;
COUNT(列名)是返回特定列的值具有的行數,不包括NULL;
COUNT(1)與COUNT(*)的返回結果一樣,不過資料表沒有主鍵.)
例子:
查詢員工表中的記錄數
mysql> SELECT COUNT (*) FROM emp;
查詢員工中有獎金的人數
mysql> SELECT COUNT (comn) AS total FROM emp;
查詢員工表中月薪大於2500元的人數
mysql> SELECT COUNT (*) AS total FROM emp
-> WHERE sal > 2500;
IFNULL()函式,可以判斷欄位是否為NULL,若為NULL,則可以將NULL替換為數值0;
例子:
查詢月薪與獎金之和大於2500的人數
mysql> SELECT COUNT (*) AS total FROM emp
-> WHERE sal+IFNULL(comn,0)> 2500;
2) SUM()函式
用於計算指定列的數值和,若型別不是資料型別,則計算結果是0
SELECT SUM(欄位名) FROM 表名;
例子:
查詢員工表中所有員工的月薪和
mysql> SELECT SUM(sal) FROM emp;
查詢員工表中所有員工的月薪加獎金的和,查詢出的列名指定為total
mysql> SELECT SUM(sal+IFNULL(comn,0)) AS total FROM emp;
3) AVG()函式
用於計算指定列的平均值,若型別不是資料型別,則計算結果是0
SELECT AVG(欄位名) FROM 表名;
例子:
查詢員工表中所有員工的平均月薪
mysql> SELECT AVG(sal) FROM emp;
4) MAX()函式
用於計算指定列的最大值,如果指定列是字串型別,那麼使用字串排序運算
SELECT MAX(欄位名) FROM 表名;
5) MIN()函式
用於計算指定列的最小值,如果指定列是字串型別,那麼使用字串排序運算
SELECT MIN(欄位名) FROM 表名;
六 分組查詢
1. GROUP BY
查詢資料時需要按一定的類別進行統計
例子:
查詢員工表中每個部門編號以及每個部門工資大於1500元的人數
mysql> SELECT deptno,COUNT (*) FROM emp
-> WHERE sal>1500
-> GROUP BY deptno;
2. HAVING子句
用於在分組後對資料進行過濾
SELECT 欄位名.... FROM 表名
GROUP BY 欄位名..... [HAVING 條件表示式];
例子:
查詢員工表中工資總和大於9000元的部門編號以及工資和
mysql> SELECT deptno,SUM(sal) FROM emp
-> GROUP BY deptno;
-> HAVING SUM(sal) > 9000;
過程,先分組查詢每個部門編號的工資和,再過濾出工資和大於9000元的部門
3. LIMIT分頁
用於限制查詢結果的數量
SELECT 欄位名.... FROM 表名
LIMIT [M,]N;
(第一個引數m可選代表開始索引,預設值為0,代表第一條記錄;第二個引數n必選,代表 從第m+1條記錄開始取n條記錄)
例子:
查詢學生表中從第三條開始的記錄,總共查詢五條記錄
mysql> SELECT * FROM stu LIMIT 2,5;
相關文章
- SQL語句查詢表結構SQL
- mysql 查詢建表語句sqlMySql
- SQL Server-簡單查詢語句SQLServer
- Mybatis 查詢語句結果集總結MyBatis
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- SQL總結(二)連表查詢SQL
- SQL查詢語句 (Oracle)SQLOracle
- SQL server 查詢語句SQLServer
- sql查詢語句流程SQL
- SQL mother查詢語句SQL
- hibernate的hql查詢語句總結
- SQL語句將查詢結果插入到另一張表中SQL
- 簡單查詢、插入、更新、刪除SQL語句SQL
- SQL Server阻塞查詢語句SQLServer
- SQL查詢語句使用 (轉)SQL
- sql 查詢經典語句SQL
- 一句簡單的SQL查詢語句的背後...SQL
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 多表查詢建表語句
- SQL查詢總結SQL
- SQL Server-簡單查詢語句,疑惑篇(三)SQLServer
- postgresql dba常用sql查詢語句SQL
- SQL查詢語句精華文章(轉)SQL
- Mysql跨表更新 多表update sql語句總結MySql
- oracle、my sql、sql隨機查詢語句OracleSQL隨機
- 查詢全表掃描語句
- V$sql查詢未使用繫結變數的語句SQL變數
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- MySQL的簡單查詢語句MySql
- SQL語句規範總結SQL
- MySQL基本sql語句總結MySql
- sql語句學習總結SQL
- SQL語句使用總結(一)SQL
- mysql查詢效率慢的SQL語句MySql
- 查詢執行慢的SQL語句SQL
- SQL語句巢狀查詢問題SQL巢狀
- 查詢阻塞與被阻塞SQL語句SQL
- Sql Server系列:查詢分頁語句SQLServer