目錄條件查詢
排序與分頁
limit
分組查詢
mysql 常用函式彙總
子查詢連線查詢
select 查詢的列 from 表名;
注意:查詢常量select 語句中不區分⼤⼩寫,查詢的結果放在⼀個**中,**的第1⾏稱為列頭,第2⾏開始是資料,類屬於⼀個⼆維陣列。
select 常量值1,常量值2,常量值3;
複製**
檢視表示式mysql> select 1,'a';
+---+---+
| 1 | a |
+---+---+
| 1 | a |
+---+---+
1 row in set (0.00 sec)
select 表示式;
複製**
查詢函式mysql> select 1+2,3*10,10/3;
+-----+------+--------+
| 1+2 | 3*10 | 10/3 |
+-----+------+--------+
| 3 | 30 | 3.3333 |
+-----+------+--------+
1 row in set (0.00 sec)
select 函式;
複製**
查詢指定字段mysql> select sum(1+2);
+----------+
| sum(1+2) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)
select 欄位1,欄位2,欄位3 from 表名;
查詢所有列
select * from 表名;
列別名select 列 [as] 別名 from 表;
表別名select 別名.欄位,別名.* from 表名 [as] 別名;
注意select 列名 from 表名 where 列 運算子 值
條件查詢運算子
邏輯查詢運算子
between ... and(區間查詢)# 可以提⾼語句的簡潔度
in 查詢
not in 查詢:與 in 查詢相反
null 值專用查詢
查詢運算子、like 、between ... and 、in 、not in 對 null 值查詢不起效<=> (安全等於):既可以判斷null值,又可以判斷普通的數值,可讀性較低,⽤得較少
排序查詢(order by)
select 欄位名 from 表名 order by 欄位1 [asc|desc], 欄位2 [asc|desc];
排序方式
limit
limit ⽤來限制 select 查詢返回的⾏數,常⽤於分頁等操作
select 列 from 表 limit [offset,] count;
limit 中 offset 和 count 的值不能⽤表示式,只能夠跟明確的數字(不能為負數)複製**分頁查詢:select 列 from 表名 limit (page - 1) * pagesize, pagesize;
分組中 select 後⾯只能有兩種型別的列select column, group_function,... from table
[where condition]
group by group_by_expression
[h**ing group_condition];
出現在 group by 後的列
使⽤聚合函式的列
聚合函式
聚合函式對一組值執行計算並返回單一的值
單字段分組
group by x # 意思是將所有具有相同x字段值的記錄放到乙個分組裡
多欄位分組
group by x, y # 意思是將所有具有相同x字段值和y字段值的記錄放到乙個分組裡
分組前篩選資料
分組前對資料進⾏篩選,使⽤ where 關鍵字
分組後篩選資料
分組後對資料篩選,使⽤h**ing 關鍵字
where 和 h**ing 的區別where & group by & h**ing & order by & limit ⼀起協作
where、group by 、h**ing 、order by 、limit 這些關鍵字⼀起使⽤時,先後順序有明確的限
制,語法如下:
複製**
select 列 from
表名 where [查詢條件]
group by [分組表示式]
h**ing [ 分組過濾條件]
order by [排序條件]
limit [offset,] count;
注意:必須按照上⾯的順序寫 sql 語句,否則報錯mysql 數值型函式
mysql 字串函式
mysql 日期和時間函式
mysql 流程控制函式
按⼦查詢出現在主查詢中的不同位置分類
複製**
select exists (select employee_id from employees where salary = 300000 ) as 'exists返回1或者0';
注意⼦查詢中列的值為 null 的時候,外查詢的結果為空(大坑)笛卡爾積(交叉連線)
有兩個集合 a 和 b,笛卡爾積表⽰ a 集合中的元素和 b 集合中的元素,任意相互關聯產⽣的所有可能的結果。
複製**
內連線select 字段 from 表1,表2[, 表n]; # 隱式交叉連線
或者 select 字段 from 表1 join 表2 [join 表n]; # 顯示交叉連線
內連線相當於在笛卡爾積的基礎上加上了連線的條件。當沒有連線條件的時候,內連線上公升為笛卡爾積。
複製**
內連線也稱為等值連線,結果為返回兩張表都滿足條件的部分select 字段 from 表1 inner join 表2 on 連線條件;
或 select 字段 from 表1 join 表2 on 連線條件;
或 select 字段 from 表1, 表2 [where 關聯條件];
外連線外連線涉及到 2 個表,分為:主表和從表,要查詢的資訊主要來⾃於哪個表,誰就是主表。外連線查詢結果為主表中所有記錄。如果從表中有和它匹配的,則顯⽰匹配的值,這部分相當於內連線查詢出來的結果;如果從表中沒有和它匹配的,則顯⽰ null 。
外連線查詢結果 = 內連線的結果 + 主表中有的⽽內連線結果中沒有的記錄
左外連線
取左邊的表的全部,右邊的表按條件,符合的顯示,不符合則顯示 null
複製**
select 列 from 主表 left join 從表 on 連線條件;
右外連線
取右邊的表的全部,左邊的表按條件,符合的顯示,不符合則顯示 null
複製**
select 列 from 從表 right join 主表 on 連線條件;
全連線
使用 full join 關鍵字,全連線返回左外連線和右外連線的結果
複製**
select 列 from 從表 full join 主表 on 連線條件;
自連線
自連線是指使用表的別名實現表與其自身連線的查詢方法。
MySQL查詢操作
mysql查詢語句 select from 表名 查詢出該表名下所有資料 代表所有字段 簡單的查詢語句方式 select 字段列表 表示式 函式 from 表名 查詢多個字段 select 欄位1,欄位2 from 表名 表示式 select 表示式 算術表示式 from 表名 例如 此處有一張工資...
MySQL查詢操作
mysql查詢語句 select from 表名 查詢出該表名下所有資料 代表所有字段 簡單的查詢語句方式 select 字段列表 表示式 函式 from 表名 查詢多個字段 select 欄位1,欄位2 from 表名 表示式 select 表示式 算術表示式 from 表名 例如 此處有一張工資...
mysql in操作 MySQL查詢in操作排序
in操作排序 先說解決方案 select from test where id in 3,1,5 order by field id,3,1,5 或許有人會注意過,但我以前真不知道 sql select from table where id in 3,6,9,1,2,5,8,7 這樣的情況取出來後...