1.select語句
SELECT * FROM <表名>;
1.1.通配符的使用:
通配符 * :查詢所有的列等等
通配符 _ :匹配一個字符
通配符 %:匹配任意長度的字符,包括空字符串
1.2.查詢關鍵字
1.2.1 關鍵字 distinct的用法 除去數據重復的值
SELECT DISTINCT [字段名] FROM <表名>
1.2.2關鍵字 like的用法 like與通配符配合使用
SELECT [字段名1,字段名2,…] FROM <表名> WHERE [字段名] [ NOT ] LIKE ‘匹配字符串’
2.子查詢
常用的子查詢語句有五種:
- 條件查詢(where子句):按照“條件表達式”指定的條件進行查詢。
- 分組查詢(group by子句):按照“屬性名”指定的字段進行分組。group by子句通常和count()、sum()等聚合函數一起使用。
- 篩選查詢(having子句):有group by才能having子句,只有滿足“條件表達式”中指定的條件的才能夠輸出。
- 排序查詢(order by子句):按照“屬性名”指定的字段進行排序。排序方式由“asc”和“desc”兩個參數指出,默認是按照“asc”來排序,即升序。
- 限制查詢(limit):限制結果集。
2.1條件查詢(where子句)
where子句常與運算符配合使用
2.2分組查詢(group by子句)
分組將一個區域划分成多個小區域,對多個小區域進行數據處理
select 類別, sum(數量) as 數量之和
from A group by 類別
2.3篩選查詢(having子句) 針對“組”里面條件進行篩選
having一般跟在group by之后,執行記錄組選擇的一部分來工作的。where則是執行所有數據來工作的。
再者having可以用聚合函數,如having sum(qty)>1000。
2.4排序查詢(order by子句)
- order by <列名> # 默認升序排列
- order by <列名> desc # 降序排列
- order by <列名> asc # 升序排列
- order by rand() # 隨機排列
2.5限制查詢(limit子句)
在查詢語句中,我們想要只返回前面幾行數據
limit [offset] N
2.6 子查詢關鍵字
2.6.1 關鍵字 as的用法
1. as的用法一般是用於重命名“列名”、“表名”,為了查詢方便。
2.as作為連接語句的操作符
create table charm1 as select * from charm2
解釋:上面的語句是先獲取charm1表格中所有數據,之后再創建一張charm1表,結構和charm2表相同,記錄為后面語句的查詢結果
2.6.2 關鍵字 in的用法
列如:現在我們查詢成績大於60的學生的結果集,然后將原成績表中的成績與結果集進行比較,如果存在,就輸出這條學生的記錄。
select * from stu_sc where score in (select score from stu_sc where score>60)
2.6.3 關鍵字 exists的用法
exists子查詢就是用來判斷某些條件是否滿足,exists是接在where之后的,
exists返回的結果只有0,1.
select * from stu_sc where exists (select * from stu_sc where score>60)
2.6.4 關鍵字 any 的用法
any關鍵字表示滿足其中的任意一個條件,只要滿足內層查詢語句結果的任意一個,就可以通過該條件來執行外層查詢語句
select * from stu_sc where id < ANY (select id from stu_sc )
2.6.5 關鍵字 all 的用法
all和any 剛好是相反的,all 關鍵字需要滿足所有結果。
select * from stu_sc where id > ALL (select id from stu_sc )
2.6.6 關鍵字 between ..and 的用法
比如:查詢stu_sc表中,分數在40——60之間的數據。
select * from stu_sc where score between 40 and 60
2.7 子查詢組合
2.7.1 組合:where + group by + having + 函數
3. 連接查詢
為什么用到連接查詢,在用戶查看數據的時候,需要現實的數據來自多張表,這時候就需要連接查詢。
3.1 內連接查詢
select * from 表名 join 被連接表 on 連接條件
select Sname,Cno,Grade FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Sdept = '計算機系'
3.2 自連接查詢
3.3 外連接查詢
FROM 表一 left/right JOIN 表二 ON 連接條件
4. 集合查詢
集合操作的分類
並操作 union
交操作 intersect
差操作 except
注意:參加集合 操作的各查詢結果的列數必須相同,對應項的數據類型必須相同。
4.1 union 將多個查詢結果合並起來,自動去掉重復元組
4.2 intersect 該運算符返回兩個查詢或多個查詢的不同行
(select col from table1) intersect (select col from table2);
4.3 except