SQL 查詢語句總結
SQL 查詢語句總結
1. 列名
Select Sname AS 姓名 from Student;
·這裡AS可以省略。
2. 去重:distinct
Select distinctSno from sc;
3. WHERE條件查詢
比較 =/>/</>=/<=
確定範圍 between … and …/notbetween … and …
確定集合 IN/NOT IN
字元匹配 LIKE/NOT LIKE
空值 IS NULL/IS NOTNULL
多重條件 AND/OR
4. LIKE匹配
_下劃線:匹配任意一個字元
%百分號:匹配0個或多個字元;
[]:匹配[]中的任意一個字元。如[acgd]表示匹配a/c/g/d中的任何一個,對於連續的,可以寫成[a-d];
[^]:不匹配[]中的任何一個字元。寫成[^abgd]。
5. SQL Server中的庫函式
如:RTRIM,去掉尾隨空格的干擾(預設儲存時,多餘位補充空格。)
Select Sname from Student WHERE RTRIM(Sname)LIKE ‘王__’
6. 涉及空值NULL的查詢
這裡注意不能使用=/!=等符號,需要使用 ISNULL/IS NOT NULL。
7. 多重查詢條件,使用AND、OR
Select Snamefrom Student WHERE Sdept=’計算機系’ AND Sage<20;
8. 查詢結果排序
·ASC從小到大、DESC從大到小
·預設按照升序
·可以按多個列進行排序,首先按前面的列排序,遇到相同記錄再按照第二列排序。
9. 聚合函式
·COUNT(*):統計表中元素的個數;
·COUNT(DISTINCT 列名):統計本列中非空列值的個數;(DISTINCT表示不包括列重複值)
·SUM:計算列值的和;
·AVG:平均值
·MAX:最大值
·MIN:最小值
上述函式中除了COUNT(*)外,其他函式在計算過程中均忽略NULL值。
10. 分組GROUP BY
比如需要統計每個學生的考試成績,而不是全體學生的考試平均成績時,就需要現將學生進行分組。(按每個人)
GROUPBY 分組依據
HAVING組條件
要求:
(1)查詢表中的每個列必須要麼是分組依據列(在GROUP BY後邊的列),要麼是聚合函式;
(2)GROUP BY後不能使用別名;
11. 帶WHERE分組的子句
過程:先執行WHERE子句,再對篩選出的滿足條件的資料執行GROUP BY操作。
12. 按多列分組
GROUP BYSdept,Ssex
多列分組,多列值合在一起唯一的分組。
13. 使用HAVING子句
用於對分組後的結果進行再篩選。
如:
SelectSno,COUNT(*) 選課門數 FROM SC
GROUP BY Sno
HAVINGCOUNT(*)>3
最後篩選出統計結果滿足大於3的組。
14. 分組總結:
·WHERE子句用來篩選FROM子句中指定的資料來源所產生的行資料;
·GROUP BY子句用來對經WHERE子句篩選後的結果資料進行分組;
·HAVING子句用來對分組後的結果資料再進行篩選。
普通多表連線查詢
如:
SelectSname,Cno,Grade FROM Student S
JOIN SC
ON S.Sno =SC.Sno
WHERE Sdep = ‘計算機系’
注意:當為表指定了表名,在查詢語句中的其他地方,所有用到表名的地方都要使用別名,而不能再使用原表名。
15. 自連線
一種特殊的內連線,指互相連線的表在物理上為同一張表。
16. 外連線
如:查詢學生的選課情況,包括選了課程的學生和沒有選課程的學生。
SelectStudent.Sno,Sname,Cno,Grade
From StudentLeft OUTER JOIN SC
ON Student.Sno =SC.Sno
有部分不滿足表連線條件,但進行左外連線時也將它們顯示出來,並將不滿足連線條件的結果在相應列上放置NULL值。
17. 子查詢一個Select巢狀在另一個Select中。
常用到IN、NOT IN。
---------------------
轉載:https://blog.csdn.net/Songjs19931206/article/details/47300853