SQL หรือ Structured Query Language (จะอ่านออกเสียงว่า S-Q-L หรือ Sequel ก็ได้) เป็นภาษาคอมพิวเตอร์ที่ใช้ในการทำงานกับฐานข้อมูล ตั้งแต่การจัดการข้อมูล (insert, delete, update, etc.) ไปจนถึงการดึงข้อมูล (query) ออกมาใช้งาน พอได้ยินว่าเป็น “ภาษา” คอมพิวเตอร์ ตอนนี้หลายๆ คนคงกำลังจะกดปิดหน้าต่างนี้ 🤚แต่เดี๋ยวก่อน! ในบทความนี้ ผมจะมาเล่าให้ฟังว่าทำไมภาษา SQL ถึงเป็นหนึ่งในทักษะที่ “ทุกคน” ควรจะมีในยุคนี้
แต่ก่อนอื่น ลองมาดูตัวอย่าง SQL Query กันสักหน่อยเพื่อให้ทุกคนเห็นภาพกันมากขึ้น สมมติเรามีตารางข้อมูลโพสต์จาก FB เพจของ Skooldio จัดเก็บอยู่ในฐานข้อมูล หน้าตาแบบนี้
ถ้าเราอยากดึงข้อมูลโพสต์ที่เป็นรูปภาพที่ได้ reactions เกิน 100 ก็สามารถทำได้ง่ายๆ ด้วยคำสั่ง
SELECT type, reactions, message, link FROM skooldio_page WHERE type = 'photo' AND reactions > 100
ซึ่งอ่านแล้วก็จะพอเข้าใจได้ทันทีว่าคำสั่งนี้ทำอะไรบ้าง เหมือนประโยคภาษาอังกฤษทั่วๆ ไป ง่ายไม๊ล่ะ! 😉 ถึงตอนนี้หลายคนคงคิดในใจว่าจริงๆ แล้ว เราสามารถทำแบบเดียวกันด้วย MS Excel ได้ง่ายกว่าตั้งเยอะ แค่แปลงตารางข้อมูลให้เป็น Excel Tableแล้วก็กดเลือก Filter ตาม Column … งั้นเราลองมาดูกันอีกหนึ่งตัวอย่าง
คราวนี้เราอยากดูว่าโพสต์แต่ละประเภท (photo, link, video, etc.) ได้รับ reactions โดยเฉลี่ยเท่าไหร่ ก็สามารถทำได้ด้วยคำสั่ง
SELECT post_type, AVG(reactions) FROM skooldio_page GROUP BY post_type
ซึ่งก็ยังคงเป็นประโยคภาษาอังกฤษเข้าใจง่ายๆ เหมือนเดิม แต่คราวนี้ถ้าเราอยากทำแบบเดียวกันใน MS Excel ก็จะเริ่มซับซ้อนขึ้นมาอีกนิด เพิ่มขั้นตอนอย่างการทำPivot Table
ทุกคนพอจะเห็นภาพมากขึ้นแล้วว่า SQL คืออะไร แต่ว่ามันดีขนาดนั้นจริงๆ หรอ? ทำไมถึงเป็นทักษะที่จำเป็นในยุคนี้? ลองมาดู 3 เหตุผลที่ทุกคนควรเริ่มหัดเขียน SQL กัน
1. จำเป็น จำเป็น จำเป็น
เนื่องจาก SQL เป็นภาษาหลักที่ใช้ในการทำงานกับฐานข้อมูล ในยุคที่ทุกๆ องค์กรมีข้อมูลมากมายมหาศาล ทักษะการเขียน SQL จึงเป็นที่ต้องการมากๆ ในตอนนี้ หลายองค์กรอยากจะปรับตัวเองให้เป็น Data-Driven Organization แต่ทั้งองค์กรกลับมีคนแค่กลุ่มเล็กๆ ในทีม IT หรือ Analyst ที่เขียน SQL เป็นและสามารถเข้าไปดึงข้อมูลมาเพื่อตอบคำถามที่สำคัญทางธุรกิจได้
ตัวอย่าง SQL ง่ายๆที่ได้ยกไปข้างบนนั้น เรายังสามารถใช้ SQL กับการทำงานข้อมูลที่ซับซ้อนมากๆ ได้ เช่น แปลงข้อมูล (data transformation), ทำความสะอาดข้อมูล (data cleansing), ผูกสูตรคำนวณง่ายๆ (arithmetic operations) ไปจนถึงการคำนวณที่ซับซ้อนอย่าง Moving Average ก็สามารถทำได้เช่นกัน
จากผลสำรวจบุคลากรที่ทำงานด้าน Machine Learning และ Data Science ของ Kaggle พบว่าภาษา SQL มาเป็นอันดับที่ 2 ของภาษาที่ถูกใช้งานเป็นประจำ
จากการสำรวจของ StackOverflow ของ developers ภาษา SQL ก็เป็นภาษาที่ได้รับความนิยมมากเป็นอันดับ 3 เลยทีเดียว
บุคลากรในกลุ่ม Non-technical หรือ Business Users ไม่ว่าจะเป็น marketers, sales, หรือ product managers อาจจะคุ้นเคยทำงานกับข้อมูลด้วย MS Excel อยู่แล้ว แต่พอปริมาณข้อมูลเริ่มเพิ่มมากขึ้น MS Excel ก็จะเริ่มหน่วง และไม่ใช่เครื่องมือที่เหมาะสมอีกต่อไป ประโยชน์ที่สำคัญมากอีกอย่างหนึ่งของการเขียนคำสั่ง SQL แทนการคลิกๆ ใน MS Excel ก็คือการทำซ้ำ (repeatable) และนำมาใช้ใหม่ (reusable) เช่น หากเราต้องการดึงข้อมูลเพื่อมาสรุปทำรายงานแบบเดิมซ้ำๆ ทุกเดือน ก็เพียงแค่นำคำสั่ง SQL ที่เคยเขียนไว้มารันซ้ำบนข้อมูลชุดใหม่
ดังนั้นทักษะการเขียน SQL จึงจำเป็นสำหรับทุกคนที่อยากเอาข้อมูลมาตอบคำถามทางธุรกิจและตัดสินใจได้อย่างมีประสิทธิภาพ และถ้าคุณเป็นคนกลุ่มน้อยในสายงานของคุณที่สามารถเขียน SQL ได้ เตรียมเป็น #ความหวังของหมู่บ้าน ให้ทีมได้เล้ยยย!!
2. เรียนทีเดียวใช้ได้ยาวๆ
ในขณะที่ภาษาคอมพิวเตอร์หลายๆ อันล้มหายตายจากกันไป แต่ภาษา SQL ที่ถูกสร้างขึ้นในปี 1974 ยังคงได้รับความนิยมอย่างต่อเนื่องมาจนถึงปัจจุบัน และยังไม่มีแววที่จะหายไปในเร็วๆ นี้ ที่สำคัญไปกว่านั้น SQL เป็นมาตรฐานของ American National Standards Institute (ANSI) นั่นคือ ระบบฐานข้อมูลที่เป็นไปตามมาตรฐาน SQL ที่กำหนดไว้ ไม่ว่าจะของฟรี (เช่น MySQL) หรือเสียตังค์ (เช่น MS SQL Server, Oracle Database) ก็สามารถใช้คำสั่ง SQL พื้นฐานเดียวกันได้เลย
จนในยุคของ Big Data ถ้าใครเขียน SQL เป็น ก็แทบจะพร้อมใช้งาน HiveQL หรือ Google BigQuery ในการจัดการกับข้อมูลขนาดใหญ่ใน Data Lake ได้เลย
หรือแม้กระทั่ง Google Sheets ตอนนี้ ก็เพิ่มความสามารถให้เราสามารถเขียน SQL Query ได้แล้วเช่นกัน!! 😲
3. ประตูสู่สายงานข้อมูล
ทักษะการเขียน SQL เป็นจุดเริ่มต้นที่ดีในการก้าวเข้าสู่สายงานด้านข้อมูล การเขียน SQL Query ช่วยฝึกให้เราคิดในรูปแบบแถวและคอลัมน์ของตารางได้เป็นอย่างดี และสามารถจัดการข้อมูลได้อย่างมีประสิทธิภาพมากขึ้น หากต้องการต่อยอดไปศึกษาภาษาอื่นๆ อย่าง R หรือ Python ก็จะสามารถทำได้ง่าย
ตัวอย่างเช่น คำสั่งที่ใช้ในการสรุปว่าโพสต์แต่ละประเภทได้รับ reactions โดยเฉลี่ยเท่าไหร่
- เขียนด้วยภาษา R (+ dplyr)
skooldio_page %>% group_by(post_type) %>% summarise(avg = mean(reactions))
- เขียนด้วยภาษา Python (+ pandas)
skooldio_page.groupby(['post_type']).agg({'reactions' : np.mean})
จะเห็นได้ว่าก็จะมีเค้าโครงของการทำ GROUP BY
และ aggregate/summarise ข้อมูลด้วยฟังก์ชันหาค่าเฉลี่ย เหมือนใน SQL Query อยู่
เนื่องจากคนที่ทำงานด้านข้อมูลส่วนใหญ่ สามารถเขียน SQL ได้คล่องแคล่วอยู่แล้ว จึงเริ่มมีการเพิ่มขีดความสามารถใหม่ๆ ให้กับระบบฐานข้อมูล ที่สามารถเรียกใช้ได้ผ่านภาษา SQL เช่น การประมวลผลข้อมูลทางภูมิศาสตร์ (Geographic data) เช่น ที่ตั้งร้านค้า, เขตการปกครอง, ตำแหน่งจุดสนใจต่างๆ หรือแม้กระทั่งการสร้างโมเดล Machine Learning
เชื่อหรือยังว่า การเขียน SQL เป็นพื้นฐานที่ดีในการเริ่มต้นทำงานกับข้อมูล 😉
อยากเริ่มเรียนแล้ว?
อย่างที่กล่าวไปแล้วข้างต้นไปแล้ว ว่า SQL เป็นภาษาเก่าแก่ และเป็นภาษาที่จำเป็นมากๆ สำหรับทุกคน บทเรียน SQL ขั้นพื้นฐานฟรีๆ จึงมีอยู่เยอะมากบน Internet เช่น
- DataCamp บทเรียนเป็นภาษาอังกฤษ พร้อมกับ Live Coding ให้ฝึกเขียนระหว่างเรียนไปด้วย (เนื่องด้วยช่วงนี้กำลังมีการรณรงค์ต่อต้าน DataCamp จากพฤติกรรมที่ไม่เหมาะสมของผู้บริหาร จึงขออนุญาตเอาลิงก์ออก ใครที่สนใจลองไป Google กันเองดู)
- ใครที่อยากดูบทเรียนเป็นภาษาไทย ก็มีของเพจ Data Rockie ที่เข้าไปเรียนกันได้ฟรีๆ ช่วยให้คุณเริ่มต้นเขียนภาษา SQL แบบง่ายๆ ทาง Intro to SQL for Data Analysis
ส่วนใครที่อยากจะลงลึกในรายละเอียด ฝึกฝนเพื่อให้ใช้งานได้คล่อง และเห็นภาพการนำไปใช้ในการตอบคำถามทางธุรกิจหรือวิเคราะห์ข้อมูลมากขึ้น ลองดูหลักสูตรออนไลน์ของ Codecademy ซึ่งมี Live Coding เหมือน DataCamp และเคสให้ฝึกทำค่อนข้างเยอะ ทาง Learn SQL from Scratch | Codecademy
หรือ…มาเรียนด้วยกันที่ Skooldio! #ฝากร้าน 😂😂
- SQL for Data Analytics หลักสูตรออนไลน์ที่จะสอนคำสั่งพื้นฐานที่จำเป็น โดยเน้นให้ฝึกคิดและเขียน SQL Query เพื่อตอบคำถามที่น่าสนใจจากข้อมูล เหมาะสำหรับบุคคลทั่วไป ไม่จำเป็นต้องมีพื้นฐานการเขียนโปรแกรมอะไรมาก่อน
- สำหรับคนที่มีพื้นฐานที่ดีแล้ว SQL Advanced เราจะมาดูการใช้ Subqueries, การทำงานกับข้อมูลแบบ ARRAY และ STRUCT, การใช้งาน Window functions รวมไปถึงฟีเจอร์ใหม่ๆ ของ Google BigQuery อย่าง BigQuery ML และ BigQuery GIS