SQL語法
select [distinct] 欄位串列
from 資料表名稱
where 條件式
group by 群組欄位
having 群組條件
order by 排序欄位串列 [預設遞增ASC | 遞減DESC]
說明
- Select 後面列出要查詢的欄位名稱,如果所有欄位皆要列出,則可以使用符號 ‘*’ 表示。
- Distinct 表示選擇不重複的資料。
- From 後面接資料表名稱,可以包含多個資料表。
- 資料表名稱或欄位名稱可以另取別名,例如“資料表名稱 AS 別名” 或是 “資料表名稱 別名”。
- Where 條件式中使用「比較運算子」、「邏輯運算子」以及「模糊或範圍條件」來篩選資料。
- Group By 欄位1, 欄位2, …, 欄位n [Having 條件式]:Group By 依照欄位內容將資料群組,Having 則可篩選需要的群組。
- Order By 欄位1, 欄位2, …, 欄位n [Asc|Desc]:依照某一個欄位來進行排序。排序之順序預設為由小至大遞增Asc,若要由大至小遞減排序,則為Desc。
- 在SQL中提供聚合函數統計資料表中數值資料的最大值、最小值、平均值及合計值等。
常用的聚合函數
聚合函數 | 說明 |
---|---|
Count(*) | 計算個數函數 |
Count(欄位名稱) | 計算該欄位名稱之不具NULL值的個數 |
Avg(欄位名稱) | 計算平均函數 |
Sum(欄位名稱) | 計算總合函數 |
Max(欄位名稱) | 計算最大值函數 |
Min(欄位名稱) | 計算最小值函數 |
範例
某公司的員工資料表Emp如下:
eid | ename | sex | address(地址) | salary(薪水) | dept(部門) |
---|---|---|---|---|---|
e001 | 王大同 | 男 | 中壢區健行路 | 20000 | d01 |
e002 | 李小明 | 男 | 八德區介壽路 | 25000 | d01 |
e003 | 林上華 | 女 | 平鎮區中豐路 | 30000 | d02 |
e004 | 丁中民 | 男 | 中壢區中正路 | 32000 | d03 |
e005 | 陳文心 | 女 | 平鎮區民族路 | 22000 | d01 |
e006 | 李小英 | 女 | 中壢區中山路 | 28000 | d03 |
題目7
查詢薪資高於24000元的男性員工編號及姓名,並依照薪資由高至低排序。
【解】觀看教學影片
select eid, ename from Emp
where salary > 24000 and sex = '男'
order by salary desc
題目 10
請計算男性員工的平均薪資。
【解】觀看教學影片
# 方法 1
select avg(Salary) from Emp where sex = '男'
# 方法 2
select avg(Salary) from Emp group by sex having sex = '男'