SELECT語句學習

要學習SELECT語句,首先我們需要建立數據庫,在創建數據庫並插入數據SQL約束中我們已經學習了數據庫的創建或直接下載,因此我們這裏直接跳過這個過程。假設我們已經下載了MySQL-04-01.sql 與MySQL-04-02.sql ,其中第一個用於創建數據庫,第二個用於插入數據。

基本SELECT語句
SELECT語句基本格式爲:
SELECT 要查詢的列名 FROM 表名 WHERE 限制條件;
例如查看employee表的name和age:
SELECT name,age FROM employee;

數學符號條件
WHERE限制條件可使查詢更精確,其限制條件可以有數學符號(=,<,>,>=,<=)
例如查詢age大於25的結果:
SELECT name,age FROM employee WHERE age>25;
或者找一個名叫Jim的員工的name,age和phone:
SELECT name,age,phone FROM employee WHERE name='Jim'

“AND”與“OR”

//篩選出age小於25或age大於30
SELECT name,age FROM employee WHERE age<25 OR age>30;
//篩選出age大於25且age小於30
SELECT name,age FROM employee WHERE age>25 AND age<30;
//若需要包含25與30這兩個數字,可以替換成age BETWEEN 25 AND 30
SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;

“IN”和“NOT IN”
用於篩選“在”或“不在”某個範圍內的結果:

//查詢在dpt3和dpt4的人
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN('dpt3','dpt4');
//查詢不在dpt1和dpt3的人
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');

通配符
LIKE模糊查詢,與LIKE聯用的還有通配符_和%,其中_代表一個未指定字符,而%代表不定個未指定字符,例如:

//只記得電話號碼前四位1101,後兩位忘記了,可用兩個_通配符代替
SELECT name,age,phone FROM employee WHERE phone LIKE '1101__';
//只記得人名以J開頭時用J%
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');

對結果排序
排序關鍵字ORDER BY,默認是升序排序,使用關鍵字ASC與DESC可以指定排序爲升序或降序,按照salary降序排序語句爲:

SELECT name,age,salary,phone FROM employee ORDER BY salary DESC; 

內置函數與計算
SQL有五個內置函數可以對SELECT的結果做操作,COUNT-計數,SUM-求和,AVG-求平均值,MAX-最大值,MIN-最小值。COUNT可用於任何數據類型,SUM和AVG只能對數字類數據類型做計算,MAX和MIN可用於數字、字符串或是日期時間數據類型,例如:

//AS關鍵詞給值重命名
SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;

子查詢
有時候需要處理多個表才能獲得所需的信息。例如:想知道Jim員工所在部門做了幾個工程。員工信息儲存在employee表中,但工程信息儲存在project表中。這種情況我們使用子查詢:

SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt HAVING of_dpt IN (SELECT of_dpt FROM employee WHERE name='Jim');

HAVING關鍵字作用和WHERE一樣,都是說明接下來要進行條件篩選操作,區別是HAVING用於對分組後的數據進行篩選。

連接查詢
如果需要顯示兩個或者多個表中數據時必須使用連接(join)操作–將兩個表或多個表當做一個新的表來操作:

SELECT id,name,people_num
FROM employee,department
WHERE employee.in_dpt=department.dpt_name
ORDER BY id;

其中id、name來自employee表,people_num來自department表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章