SlideShare a Scribd company logo
1 of 19
SQL 語言簡介
2015/05/24
Terence Huang
大綱
● Go 初學建議軟體
– Go SAS Enterprice Guide
– Go Microsoft Azure Machine Learning
● Go 指令說明和執行順序
– Go SELECT
– Go WHERE
– Go FROM (JOIN)
– Go GROUP BY(待補)
– Go HAVING (待補)
– Go ORDER BY
– Go 其他(待補)
2Terence Huang
初學建議軟體 (1/1)
● 對於數學或統計出身的人員,初學 SQL 時,建議
● 採用
● SAS Enterprice Guide
● Microsoft Azure Machine Learning
● 不要採用
● R + package(RMySQL)
● Python + package(sqlite3)
● 不採用 R, Python 原因
● 需要設定 database 的環境
● 需要借助函式將指令送給 database
● 無法直接觀看結果
3Terence Huang 回大綱
SAS Enterprice Guide (1/1)
● 不要執行 SAS 9.x,執行 SAS Enterprice Guide
● 點選 File -> New -> Program 出現指令視窗
● 在頭尾給特定指令,中間區塊可輸 SQL 指令,不需轉換
● 頭: RROC SQL;
● 尾: ;QUIT;
● 執行後可直接看結果
4Terence Huang 回大綱
Microsoft Azure Machine Learning (1/3)
● 網址: https://studio.azureml.net
● 以 hotmail 帳號註冊即可使用
● 不用輸入信用卡取得 $200 美金試用
● 點選 -> 左下的 ----->
5Terence Huang 回大綱
Microsoft Azure Machine Learning (2/3)
6Terence Huang 回大綱
Microsoft Azure Machine Learning (3/3)
7Terence Huang 回大綱
● 將 拖曳出來
● 點選左側 Data Transformation -> Manipulation
● 在右側 SQL Query Script 視窗內輸入 SQL 指令
● 僅能從 3 張表格選取資料 (別名分為 t1, t2, t3)
指令說明和執行順序 (1/1)
● SQL 簡單來說可分為 7 個指令
● 固定的輸入位置和執行順序
● 順序 位置 意義
● 1. CREATE : 放新表格的名字
● 6. SELECT : 選需要的變數
● 2. FROM : 從那些表格得到資料,會牽涉到 JOIN
● 3. WHERE : 條件式篩選資料,ex. 年紀 > 60
● 4. GROUP BY: 分群計算,ex. 總和
● 5. HAVING : 篩選分群計算的結果,ex. 總和 > 60
● 7. ORDER BY: 排序資料
8Terence Huang 回大綱
SELECT (1/2)
● Q: 從舊表格部分的欄位建立新表格
9Terence Huang 回大綱
old_A
id area age sex
1 S 5 male
2 N 20 female
3 S 30 male
4 S 10 female
5 N 60 male
6 E 90 female
new
id area
1 S
2 N
3 S
4 S
5 N
6 E
SELECT (2/2)
● Q: 從舊表格部分的欄位建立新表格
● A:
● Note.選擇所有或指定 table 中所有的欄位
10Terence Huang 回大綱
CREATE TABLE new
SELECT t1.id, t1.area
FROM old_A as t1
SELECT *
SELECT t1.*
new
id area age sex
1 S 5 male
2 N 20 female
4 S 10 female
5 N 60 male
WHERE (1/2)
● Q: 以舊表格中符合條件的資料建立新表格
ex. area ∈ {S, N}
11Terence Huang 回大綱
old_A
id area age sex
1 S 5 male
2 N 20 female
3 E 30 male
4 S 10 female
5 N 60 male
6 E 90 female
WHERE (2/2)
● Q: 以舊表格中符合條件的資料建立新表格
ex. area ∈ {S, N}
● A1:
● A2:
12Terence Huang 回大綱
CREATE TABLE new
SELECT t1.id, t1.area, t1.age, t1.sex
FROM old_A as t1
WHERE t1.area = ”S” or t1.area =
“N”
CREATE TABLE new
SELECT *
FROM old_A as t1
WHERE t1.area in (”S”, ”N”)
new
id ag
e
sex incom
e
1 5 male 20
4 10 female 10
5 60 male 30
FROM (JOIN) (1/4)
Terence Huang 13
● Q: 需要的欄位散落在兩張舊表格中,但有共通欄位
回大綱
old_A
id area age sex
1 S 5 male
2 N 20 female
3 E 30 male
4 S 10 female
5 N 60 male
6 E 90 female
old_B
id incom
e
1 20
4 10
5 30
7 40
8 11
19 20
FROM (JOIN) (2/4)
● Q: 需要的欄位散落在兩張舊表格中,但有共通欄位
● A1:
● A2:
14Terence Huang 回大綱
CREATE TABLE new
SELECT t1.id, t1.age, t1.sex,
t2.income
FROM old_A as t1, old_B as t2
WHERE t1.id = t2.id
CREATE TABLE new
SELECT t1.id, t1.age, t1.sex, t2.*
FROM old_A as t1 INNER JOIN
old_B
as t2 on t1.id = t2.id
FROM (JOIN) (3/4)
● Q: 需要的欄位散落在兩張舊表格中,但有共通欄位
還各別加入以下條件
● Q1: id 出現在 old_A 也出現在 old_B 的 (剛剛的條件)
● Q2: id 出現在 old_A 或 old_B 的
● Q3: id 出現在 old_B 中的
● Q4: id 沒出現在 old_A 但出現在 old_B 的
● FROM (JOIN) 的分類有,INNER, OUTER, FULL
● 寫法參考下頁,自行練習
15Terence Huang 回大綱
FROM (JOIN) (4/4)
16Terence Huang 回大綱
new
id area age sex
6 E 90 female
3 E 30 male
5 N 60 male
2 N 20 female
4 S 10 female
1 S 5 male
ORDER BY (1/2)
● Q: 將舊表格中以某欄資料排序呈現
ex. 先以 area 由小到大, 再以 age 由大到小
17Terence Huang 回大綱
old_A
id area age sex
1 S 5 male
2 N 20 female
3 E 30 male
4 S 10 female
5 N 60 male
6 E 90 female
ORDER BY (2/2)
● Q: 將舊表格中以某欄資料排序呈現
ex. 先以 area 由小到大, 再以 age 由大到小
● A:
18Terence Huang 回大綱
CREATE TABLE new
SELECT *
FROM old_A as t1
ORDER BY t1.area ASC, t1.age
DESC
Q&A
Thanks for your attention!
19Terence Huang 回大綱

More Related Content

More from Terence Huang

# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustment# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustmentTerence Huang
 
# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 I# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 ITerence Huang
 
# From statistics to ai
# From statistics to ai# From statistics to ai
# From statistics to aiTerence Huang
 
Deep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule netDeep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule netTerence Huang
 
Deep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain AdaptationDeep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain AdaptationTerence Huang
 
Deep Learning Basic: #01 start from CNN
Deep Learning Basic: #01 start from CNNDeep Learning Basic: #01 start from CNN
Deep Learning Basic: #01 start from CNNTerence Huang
 
文字分析 Python 入門
文字分析 Python 入門文字分析 Python 入門
文字分析 Python 入門Terence Huang
 
從統計到資料科學
從統計到資料科學從統計到資料科學
從統計到資料科學Terence Huang
 

More from Terence Huang (9)

# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustment# Can we trust ai. the dilemma of model adjustment
# Can we trust ai. the dilemma of model adjustment
 
# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 I# 手把手 Python 資料分析 I
# 手把手 Python 資料分析 I
 
# From statistics to ai
# From statistics to ai# From statistics to ai
# From statistics to ai
 
#02 Next RNN
#02 Next RNN#02 Next RNN
#02 Next RNN
 
Deep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule netDeep Learning Advance: # Capsule net
Deep Learning Advance: # Capsule net
 
Deep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain AdaptationDeep Learning Advance: #01 Domain Adaptation
Deep Learning Advance: #01 Domain Adaptation
 
Deep Learning Basic: #01 start from CNN
Deep Learning Basic: #01 start from CNNDeep Learning Basic: #01 start from CNN
Deep Learning Basic: #01 start from CNN
 
文字分析 Python 入門
文字分析 Python 入門文字分析 Python 入門
文字分析 Python 入門
 
從統計到資料科學
從統計到資料科學從統計到資料科學
從統計到資料科學
 

SQL 語言簡介

  • 2. 大綱 ● Go 初學建議軟體 – Go SAS Enterprice Guide – Go Microsoft Azure Machine Learning ● Go 指令說明和執行順序 – Go SELECT – Go WHERE – Go FROM (JOIN) – Go GROUP BY(待補) – Go HAVING (待補) – Go ORDER BY – Go 其他(待補) 2Terence Huang
  • 3. 初學建議軟體 (1/1) ● 對於數學或統計出身的人員,初學 SQL 時,建議 ● 採用 ● SAS Enterprice Guide ● Microsoft Azure Machine Learning ● 不要採用 ● R + package(RMySQL) ● Python + package(sqlite3) ● 不採用 R, Python 原因 ● 需要設定 database 的環境 ● 需要借助函式將指令送給 database ● 無法直接觀看結果 3Terence Huang 回大綱
  • 4. SAS Enterprice Guide (1/1) ● 不要執行 SAS 9.x,執行 SAS Enterprice Guide ● 點選 File -> New -> Program 出現指令視窗 ● 在頭尾給特定指令,中間區塊可輸 SQL 指令,不需轉換 ● 頭: RROC SQL; ● 尾: ;QUIT; ● 執行後可直接看結果 4Terence Huang 回大綱
  • 5. Microsoft Azure Machine Learning (1/3) ● 網址: https://studio.azureml.net ● 以 hotmail 帳號註冊即可使用 ● 不用輸入信用卡取得 $200 美金試用 ● 點選 -> 左下的 -----> 5Terence Huang 回大綱
  • 6. Microsoft Azure Machine Learning (2/3) 6Terence Huang 回大綱
  • 7. Microsoft Azure Machine Learning (3/3) 7Terence Huang 回大綱 ● 將 拖曳出來 ● 點選左側 Data Transformation -> Manipulation ● 在右側 SQL Query Script 視窗內輸入 SQL 指令 ● 僅能從 3 張表格選取資料 (別名分為 t1, t2, t3)
  • 8. 指令說明和執行順序 (1/1) ● SQL 簡單來說可分為 7 個指令 ● 固定的輸入位置和執行順序 ● 順序 位置 意義 ● 1. CREATE : 放新表格的名字 ● 6. SELECT : 選需要的變數 ● 2. FROM : 從那些表格得到資料,會牽涉到 JOIN ● 3. WHERE : 條件式篩選資料,ex. 年紀 > 60 ● 4. GROUP BY: 分群計算,ex. 總和 ● 5. HAVING : 篩選分群計算的結果,ex. 總和 > 60 ● 7. ORDER BY: 排序資料 8Terence Huang 回大綱
  • 9. SELECT (1/2) ● Q: 從舊表格部分的欄位建立新表格 9Terence Huang 回大綱 old_A id area age sex 1 S 5 male 2 N 20 female 3 S 30 male 4 S 10 female 5 N 60 male 6 E 90 female new id area 1 S 2 N 3 S 4 S 5 N 6 E
  • 10. SELECT (2/2) ● Q: 從舊表格部分的欄位建立新表格 ● A: ● Note.選擇所有或指定 table 中所有的欄位 10Terence Huang 回大綱 CREATE TABLE new SELECT t1.id, t1.area FROM old_A as t1 SELECT * SELECT t1.*
  • 11. new id area age sex 1 S 5 male 2 N 20 female 4 S 10 female 5 N 60 male WHERE (1/2) ● Q: 以舊表格中符合條件的資料建立新表格 ex. area ∈ {S, N} 11Terence Huang 回大綱 old_A id area age sex 1 S 5 male 2 N 20 female 3 E 30 male 4 S 10 female 5 N 60 male 6 E 90 female
  • 12. WHERE (2/2) ● Q: 以舊表格中符合條件的資料建立新表格 ex. area ∈ {S, N} ● A1: ● A2: 12Terence Huang 回大綱 CREATE TABLE new SELECT t1.id, t1.area, t1.age, t1.sex FROM old_A as t1 WHERE t1.area = ”S” or t1.area = “N” CREATE TABLE new SELECT * FROM old_A as t1 WHERE t1.area in (”S”, ”N”)
  • 13. new id ag e sex incom e 1 5 male 20 4 10 female 10 5 60 male 30 FROM (JOIN) (1/4) Terence Huang 13 ● Q: 需要的欄位散落在兩張舊表格中,但有共通欄位 回大綱 old_A id area age sex 1 S 5 male 2 N 20 female 3 E 30 male 4 S 10 female 5 N 60 male 6 E 90 female old_B id incom e 1 20 4 10 5 30 7 40 8 11 19 20
  • 14. FROM (JOIN) (2/4) ● Q: 需要的欄位散落在兩張舊表格中,但有共通欄位 ● A1: ● A2: 14Terence Huang 回大綱 CREATE TABLE new SELECT t1.id, t1.age, t1.sex, t2.income FROM old_A as t1, old_B as t2 WHERE t1.id = t2.id CREATE TABLE new SELECT t1.id, t1.age, t1.sex, t2.* FROM old_A as t1 INNER JOIN old_B as t2 on t1.id = t2.id
  • 15. FROM (JOIN) (3/4) ● Q: 需要的欄位散落在兩張舊表格中,但有共通欄位 還各別加入以下條件 ● Q1: id 出現在 old_A 也出現在 old_B 的 (剛剛的條件) ● Q2: id 出現在 old_A 或 old_B 的 ● Q3: id 出現在 old_B 中的 ● Q4: id 沒出現在 old_A 但出現在 old_B 的 ● FROM (JOIN) 的分類有,INNER, OUTER, FULL ● 寫法參考下頁,自行練習 15Terence Huang 回大綱
  • 16. FROM (JOIN) (4/4) 16Terence Huang 回大綱
  • 17. new id area age sex 6 E 90 female 3 E 30 male 5 N 60 male 2 N 20 female 4 S 10 female 1 S 5 male ORDER BY (1/2) ● Q: 將舊表格中以某欄資料排序呈現 ex. 先以 area 由小到大, 再以 age 由大到小 17Terence Huang 回大綱 old_A id area age sex 1 S 5 male 2 N 20 female 3 E 30 male 4 S 10 female 5 N 60 male 6 E 90 female
  • 18. ORDER BY (2/2) ● Q: 將舊表格中以某欄資料排序呈現 ex. 先以 area 由小到大, 再以 age 由大到小 ● A: 18Terence Huang 回大綱 CREATE TABLE new SELECT * FROM old_A as t1 ORDER BY t1.area ASC, t1.age DESC
  • 19. Q&A Thanks for your attention! 19Terence Huang 回大綱