MySQL基礎篇-SELECT 語句詳解
1、基本的SELECT語句
基本格式:
SELECT 要查詢的列名 FROM 表名 WHERE 限制條件;
若要查詢所有內容,則把“要查詢的列名”用*代替,代表要查詢表中所有的列。
舉個栗子:
栗子1)要查詢employee表中的name和age
SELECT name,age FROM employee;
栗子2)要查詢employee表中的所有列
SELECT * FROM employee;
從而可以比較下,SELECT 指定列和SELECT * 的區別
2、數學符號條件
SELECT語句常常會有WHERE限制條件,用於達到更加精確的查詢。
WHERE限制條件可以有數學符號(=,<,<=,>,>=,<>)
在栗子1的基礎上,細化查詢條件age>25
SELECT name,age FROM employee WHERE age>25;
3、“AND”和“OR”
WHERE的後面可以有不止一條限制,根據條件之間的邏輯關係,可以用OR(或)和AND(且)連線
在栗子1的基礎上,增加查詢age小於25或age大於30的資料
SELECT name,age FROM employee WHERE age<25 OR age>30;
或查詢年齡在25和30之間的資料
SELECT name,age FROM employee WHERE age>25 AND age<30;
另一種表現方式
SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;
4、IN和NOT IN
關鍵詞IN和NOT IN,主要用於篩選“在”或“不在”某個範圍內的結果
舉個栗子:
查詢在dpt3或dpt4的人
SELECT * FROM employee WHERE in_dpt IN('dpt3','dpt4');
查詢不在dpt1也不在dpt3的資料
SELECT * FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');
5、萬用字元
萬用字元與關鍵字LIKE一起使用,萬用字元代表未知字元。
主要有“_”和“%”兩種。“_”代表一個未指定字元,而“%”代表不定個未指定字元。
舉個栗子:
查詢電話號碼前四位為1101的資訊
SELECT * FROM employee WHERE phone LIKE '1101__';
查詢首字母為J的人
SELECT * FROM employee WHERE name LIKE'J%';
6、對查詢結果進行排序
對查詢結果按某一列進行排序,需用到ORDER BY關鍵詞。
預設情況下,ORDER BY的結果是升序排列;若需按某一列倒序排列,則需再加入關鍵詞DESC
舉個栗子:
將所有查詢結果,按salary倒序進行排序
SELECT * FROM employee ORDER BY salary DESC;
7、SQL內建函式和計算
內建函式
函式名 | COUNT | SUM | AVG | MAX | MIN |
作用 | 計數 | 求和 | 求平均值 | 最大值 | 最小值 |
SUM、AVG函式都只能對數字類資料型別做計算
MAX、MIN可用於數值、字串或是日期時間資料型別
舉個栗子:
計算出salary的最大、最小值
SELECT MAX(salary) AS max_salary, MIN(salary) FROM employee;
8、子查詢
直接上栗子:
查詢名為Tom的員工所在部門做了幾個工程。
SELECT of_dpt,COUNT(proj_name) AS count_project
FROM project
WHERE of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom');
9、連線查詢
連線的基本思想,就是把兩個或多個表當做一個新的表來操作
栗子栗子:
查詢各員工所在部門的人數,其中的id和name來自employee表,people_num來自department表
SELECT id,name,people_num
FROM employee,department
WHERE employee,in_dpt=department.dpt_name
ORDER BY id;
或用JOIN ON語法
SELECT id,name,people_num
FROM employee JOIN department
ON employee.in_dpt=department.dpt_name
ORDER BY id;