一、where語句
where語句用於限制查詢結果,只返回符合條件的記錄。
1.基本用法:where後面寫上限制條件,條件可以是比較運算、邏輯運算符或者函數運算。
“`sql
SELECT column1, column2,…columnN FROM table_name WHERE [condition];
“`
2.比較運算符:=、、=、或!=
SELECT * FROM customers WHERE customer_id = 1; // 返回ID為1的記錄 SELECT * FROM customers WHERE customer_name 'Peter'; // 返回名字不是Peter的記錄 SELECT * FROM orders WHERE order_date < '2021-09-01'; // 返回日期早於2021年9月1日的記錄
3.邏輯運算符:and、or、not
SELECT * FROM customers WHERE city = 'New York' and country = 'USA'; // 返回紐約市的美國客戶 SELECT * FROM customers WHERE city = 'Paris' or city = 'London'; // 返回巴黎或倫敦的客戶 SELECT * FROM customers WHERE not country = 'USA'; // 返回非美國國籍的客戶
4.函數運算符:通常和比較運算符結合使用,例如LIKE,BETWEEN,IN,IS NULL等等。
SELECT * FROM customers WHERE customer_name LIKE 'Ana%'; // 返回名字以Ana開頭的客戶,%代表任意字元 SELECT * FROM customers WHERE order_date BETWEEN '2021-01-01' AND '2021-12-31'; // 返回2021年訂單記錄 SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'Mexico'); // 返回美國、加拿大或墨西哥的客戶 SELECT * FROM customers WHERE phone IS NULL; // 返回沒有電話號碼的客戶
二、group by語句
group by語句用於將查詢結果按照指定列進行分組,然後對每個分組進行匯總計算。
1.基本用法:group by後面寫上列名,可以多個列名進行分組。同時,需要在select語句中使用聚合函數對分組後的結果進行計算。
“`sql
SELECT column1, SUM(column2) FROM table_name WHERE [condition] GROUP BY column1;
“`
2.聚合函數:常用的聚合函數有AVG、COUNT、MAX、MIN和SUM。
SELECT country, COUNT(*) FROM customers GROUP BY country; // 返回每個國家的客戶數目 SELECT country, AVG(bonus) FROM employees GROUP BY country; // 返回每個國家員工的平均獎金 SELECT country, MAX(salary) FROM employees GROUP BY country; // 返回每個國家員工的最高薪資 SELECT country, MIN(age) FROM employees GROUP BY country; // 返回每個國家員工的最低年齡 SELECT country, SUM(sales) FROM orders GROUP BY country; // 返回每個國家訂單銷售額之和
三、order by語句
order by語句用於對查詢結果進行排序。
1.基本用法:order by後面寫上排序的列,可以多個列名進行排序。默認為升序排列,可以使用DESC進行降序排列。
“`sql
SELECT column1, column2,…columnN FROM table_name WHERE [condition] ORDER BY column_name1 [ASC|DESC], column_name2 [ASC|DESC]…;
“`
2.排序規則:對於字元串類型的列,按照字典順序排序;對於數值類型的列,按照數值大小排序;對於日期類型的列,按照時間順序排序。
SELECT * FROM customers ORDER BY customer_name; // 按照名字升序排列 SELECT * FROM customers ORDER BY customer_name DESC; // 按照名字降序排列 SELECT * FROM orders ORDER BY order_date; // 按照日期升序排列
四、綜合示例
下面是一個綜合示例,同時使用了where、group by和order by語句。將查詢出大於50歲且工資高於30000的員工,然後按照國家和城市進行分組,計算出每個城市的平均工資,並按照平均工資降序排列。
“`sql
SELECT country, city, AVG(salary) as avg_salary FROM employees WHERE age > 50 AND salary > 30000 GROUP BY country, city ORDER BY avg_salary DESC;
“`
參考文獻
1. MySQL官方文檔:https://dev.mysql.com/doc/
2. W3School:https://www.w3schools.com/sql/
3. SQLZOO:https://sqlzoo.net/
原創文章,作者:UIWQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131253.html