Uploaded by inumild11

SQL Cheat Sheet: คู่มือ SQL ฉบับสมบูรณ์สำหรับทุกคน

advertisement
17 July 2018, version 1.0
SQL CHEAT SHEET FOR EVERYONE
SQL ย่อมาจาก S​tructured ​Qu
​ ery L
​ a
​ nguage เป็ นภาษา
ทางการทีใช ้งานกับ database มามากกว่า 40 ปี และเป็ น
ทักษะสําคัญของ data analyst ทีทุกคนควรมี
Command สําคัญใน SQL ทีต ้องใช ้ให ้เป็ น ประกอบด ้วย
● SELECT
● WHERE
● ORDER BY
● GROUP BY
● HAVING
[1] SELECT -​ --------------------------------------------------เลือกทุกคอลัมใน table นันๆ ด ้วย asterisk (*)
SELECT​ *
FROM​ table_name;
ื
เลือกคอลัมทีเราต ้องการใน table นันๆ สามารถพิมพ์ชอคอลั
ม
ได ้เลย แยกชือคอลัมด ้วย comma (,)
SELECT​ columnA, columnB
FROM​ table_name;
เปลียนชือคอลัมด ้วย AS (alias)
SELECT​ columnA ​AS​ new_column_name
FROM​ table_name;
กําหนดจํานวนแถวทีอยากดึงข ้อมูลออกมาด ้วย LIMIT
SELECT​ firstname, lastname
FROM​ table_name
LIMIT​ ​10​;
นับจํานวนแถวทังหมดใน table นันๆด ้วย COUNT
SELECT​ ​COUNT​(*) ​FROM​ ​table_name;
ํ นเลยในคอลัมนันๆ
นับจํานวน value ทีไม่ซากั
SELECT​ ​DISTINCT​ country
FROM​ customers;
[2] WHERE ​--------------------------------------------------WHERE คือการใส่เงือนไข (conditions) ในการ filter rows ที
เราต ้องการ
SELECT​ *
FROM​ customers
WHERE​ age >= ​30​;
ฟิ ลเตอร์เฉพาะลูกค ้าทีใช ้อีเมล์ @google.com
SELECT​ *
FROM​ customers
WHERE​ email ​LIKE​ ​'%@google.com'​;
ฟิ ลเตอร์เฉพาะลูกค ้าทีใช ้ชือจริงว่า J_hn โดยที _ จะเป็ นตัว
อักษรอะไรก็ได ้แค่หนึง character
SELECT​ *
FROM​ customers
WHERE​ firstname ​LIKE​ ​'J_hn'​;
ถ ้าต ้องการใส่มากกว่าหนึงเงือนไข สามารถใช ้ AND หรือ OR
เข ้ามาช่วยใน WHERE clause
เราสามารถตรวจสอบ missing value (NULL) ในตารางต่างๆ
ด ้วย IS NULL / IS NOT NULL
เลือกทุกคอลัมจาก table customers ฟิ ลเตอร์เฉพาะลูกค ้าที
อายุมากกว่าหรือเท่ากับ 30 ปี และ อาศัยในประเทศไทย
ฟิ ลเตอร์เฉพาะลูกค ้าทีไม่ระบุ address ใน table customers
SELECT​ *
FROM​ customers
WHERE​ age >= ​30​ ​AND​ ​country = ​"Thailand"​;
SELECT​ *
FROM​ customers
WHERE​ address​ I
​ S​ ​NULL​;
ฟิ ลเตอร์เฉพาะลูกค ้าทีระบุ address ใน table customers
เลือกทุกคอลัมจาก table customers ฟิ ลเตอร์เฉพาะลูกค ้าที
อายุมากกว่าหรือเท่ากับ 30 ปี หรือ ลูกค ้าทุกคนทีเป็ นผู ้ชาย
SELECT​ *
FROM​ customers
WHERE​ age >= ​30​ ​OR​ gender = "
​ Male"​;
เราสามารถใช ้ wildcard (%, _) เพือทํา pattern matching (
สําหรับคอลัมทีเป็ น text/ string เช่น ชือลูกค ้า) ใน WHERE
clause ได ้เช่นกัน
ฟิ ลเตอร์เฉพาะลูกค ้าทีชือขึนต ้นด ้วยตัว D
SELECT​ *
FROM​ ​customers
WHERE​ firstname​ ​LIKE​ ​'D%'
SELECT​ *
FROM​ customers
WHERE​ address​ I
​ S​ ​NOT​ ​NULL​;
แทนที NULL ในคอลัม address ด ้วยคําว่า ‘Bangkok’
SELECT​ ​COALESCE​(address, ​‘Bangkok’​)
FROM​ customers;
[3] ORDER BY -​ ---------------------------------------------เรียงข ้อมูลแถว (rows) จากค่าน ้อยไปมาก (Ascending)
SELECT​ * ​FROM​ customers
WHERE​ age >= ​30
ORDER​ B
​ Y​ ​age;
SQL Cheat Sheet​ โดย ​DataRockie School​ ส
​ มัครเรียนฟรีคอร์สออนไลน์ Intro to SQL for Data Analysis​ ที https://datarockie.teachable.com
17 July 2018, version 1.0
เรียงข ้อมูลแถว (rows) จากค่ามากไปน ้อย (Desceding)
SELECT​ * ​FROM​ customers
WHERE​ age >= ​30
ORDER​ ​BY​ age ​DESC​;
เราสามารถใช ้ ORDER BY กับคอลัมทีเป็ นตัวอักษร text/
string ได ้ โดย ascending order จะเรียงแถวจาก A-Z และ
desceding order (​DESC​) เรียงจาก Z-A
[4] GROUP BY​ ----------------------------------------------ใช ้จับกลุม
่ ผล query ของเรา ปกติจะใช ้คูก
่ บ
ั พวก
AGGREGATE functions
SELECT
country,
​COUNT​(*) ​AS​ n
FROM​ ​customers
GROUP​ ​BY​ country;
AGGREGATE functions คืออะไร? คือฟั งชันทีใช ้คํานวณค่า
สถิตเิ บืองต ้นในคอลัมทีเราเลือกมา เช่น
● COUNT - นับจํานวนแถว
● AVG - หาค่าเฉลีย
● SUM - หาผลรวม
● MAX - หาค่ามากทีสุด
● MIN - หาค่าน ้อยทีสุด
ตัวอย่างการใช ้งาน AGGREGATE functions
SELECT
​COUNT​(sales) ​AS​ number_of_transaction,
​AVG​(sales) ​AS​ average_sales,
​SUM​(sales) ​AS​ total_sales,
MAX​(sales) ​AS​ max_sales,
MIN​(sales) ​AS​ min_sales
FROM​ orders;
[5] HAVING -​ ------------------------------------------------ฟิ ลเตอร์ผล query ทีได ้จากการ GROUP BY ใช ้เหมือนกับ
WHERE clause
ตัวอย่างด ้านล่าง จะได ้ออกมาสองคอลัมคือ country และ n
โดยฟิ ลเตอร์เอาเฉพาะประเทศทีมีลก
ู ค ้าตังแต่ 10 คนขึนไป
SELECT
country,
​COUNT​(*) ​AS​ n
FROM​ customers
GROUP​ B
​ Y​ country
HAVING​ n >= ​10​;
Relational Database ​--------------------------------------เราสามารถเขียน query JOIN หลายๆ tables เข ้าด ้วยกัน
รูปแบบการ JOIN ทีใช ้กันบ่อยๆ ได ้แก่
● INNER JOIN
● LEFT JOIN
● RIGHT JOIN
● FULL OUTER JOIN
Template สําหรับเขียน LEFT JOIN
SELECT
a.column_name,
b.column_name
FROM​ tableA ​AS​ a
LEFT​ ​JOIN​ tableB ​AS​ b
ON​ a.key = b.key;
Template สําหรับเขียน FULL JOIN
SELECT
a.column_name,
b.column_name
FROM​ tableA ​AS​ a
FULL​ ​OUTER​ J
​ OIN​ tableB ​AS​ b
ON​ a.key = b.key;
Appendix ​-----------------------------------------------------Visual รูปแบบการ JOIN ทังสีแบบทีใช ้บ่อยๆใน SQL
เทคนิคเวลาเขียน SQL JOIN
● ใช ้ alias (AS​) เข ้ามาช่วยตังชือตาราง
● a.column_name โดยที a คือ alias ของตารางนันๆ
.column_name คือชือคอลัมทีเราต ้องการ
● ใช ้ ON a.key = b.key​ เพือเชีอมสองตารางเข ้า
ด ้วยกัน (primary key = foreign key)
Template สําหรับเขียน INNER JOIN
SELECT
a.column_name,
b.column_name
FROM​ ​tableA ​AS​ a
INNER​ J
​ OIN​ tableB​ ​AS​ b
ON​ a.key = b.key;
ติดตามเนือหาดีๆและคอร์สเรียนออนไลน์ฟรีของ
DataRockie ได ้ที www.facebook.com/datarockie
DataRockie - ​Never Stop Learning
SQL Cheat Sheet​ โดย ​DataRockie School​ ส
​ มัครเรียนฟรีคอร์สออนไลน์ Intro to SQL for Data Analysis​ ที https://datarockie.teachable.com
Download