[Fundamental Data Analytics & Data Scientist EP.06] อยากอัพสกิล Data ต้องทำความรู้จักกับ SQL Part1!!!
“ถ้าอยากจะทำงานในบริษัทที่มีการเก็บข้อมูลจำนวนมากไว้ในฐานข้อมูล (Database) จะต้องใช้ SQL ให้เป็น”
ถ้าข้อมูลมีจำนวนไม่มาก และไม่จำเป็นจะต้องมีความเชื่อมโยงกัน หรือข้อมูลที่เป็น mini project-based ก็อาจจะใช้เพียง Microsoft Excel ในการเก็บข้อมูลก็ได้ แต่ถ้าหากข้อมูลมีจำนวนมาก (มากจนเราเรียกกันว่า Big Data นั้นเอง) จนต้องเก็บเป็นฐานข้อมูลที่มีความเชื่อมโยงกันแบบซับซ้อนไปหมดหล่ะ? เราก็คงต้องใช้ SQL มาช่วยในการดึงข้อมูลกันแล้ว
แล้ว SQL คืออะไรหล่ะ? … blog นี้จะมาให้คำตอบกัน
SQL คืออัลลัย?
SQL ย่อมาจาก Structured Query Language แปลเป็นไทยตรงๆเลยก็คือ “ภาษาที่ใช้ในการขอ(Query)ข้อมูล” ซึ่ง SQL จะมีประโยชน์มากในข้อมูลที่มีลักษณะเป็นโครงสร้างเป็นตาราง หรือ Structured Data โดยหน้าที่หลักๆของมันคือภาษาเพื่อการจัดการข้อมูลดังกล่าวที่มีความเชื่อมโยงกัน(Relational Database) มีชื่อภาษาอังกฤษเท่ๆเลยก็คือ Relational Database Management System: RDBMS
tip: สำหรับข้อมูลที่ “ไม่ได้อยู่ในโครงสร้างแบบตาราง(Non-Relational Database)” เราจะเรียกการขอข้อมูลว่า NoSQL ซึ่งในปัจจุบันก็จะมีผู้ให้บริการเก็บฐานข้อมูลในประเภทนี้อยู่เยอะมาก เช่น MongoDB เป็นต้น
โดยใน Part1 นี้เราจะมาอธิบายสิ่งที่เราต้องรู้ก่อนที่จะไปเขียน SQL และใน Part ถัดไปจะเป็นการลงมือเขียน SQL กันนะครับ (หวังว่าเราจะได้เจอกันทั้งสอง Part น้า😙)
มีอะไรที่เราต้องรู้ก่อนที่จะไปเขียน SQL บ้าง
- ER Diagram
- ประเภทของคำสั่งใน SQL
- โปรแกรม Relational Database ของแต่ละผู้ให้บริการ
ER Diagram
อย่างที่เราบอกในตอนแรกว่า SQL จะใช้งานสำหรับฐานข้อมูลที่มีความเชื่อมโยงกัน ดังนั้นเราจะต้องมาทำความรู้จักกับวิธีการแสดงความสัมพันธ์ของข้อมูลใน SQL หรือที่เรียกกันว่า Entity-Relationship Diagram: ER Diagram เสียก่อน
ซึ่ง ER Diagram มันก็คือตารางแสดงความสัมพันธ์ของข้อมูลนั้นเอง จากตัวอย่างจะมีความหมายว่า
- ตารางมีทั้งหมด 6 ตารางตามจำนวนช่องสี่เหลี่ยม (Entity)
- รายละเอียดของแต่ละตาราง คือตัวแปร (Attribute) หรือคอลัมน์ที่มีอยู่ในตาราง
- เส้นที่เชื่อมผ่านระหว่างตารางนั้นก็คือ Relationship ระหว่างตารางนั้นเอง
โดยเมื่อพูดถึงเรื่องของความสัมพันธ์ระหว่างตารางจะเห็นได้ว่าเส้นที่เชื่อมกันระหว่างตารางนั้นมีหลายแบบเลยคือ
One-to-one Relationship: คือความสัมพันธ์แบบหนึ่งต่อหนึ่ง หมายความว่าสินค้าหนึ่งชิ้น จะมีชื่อได้แค่ชื่อเดียวเท่านั้น
One-to-many Relationship: ซึ่งเป็นความสัมพันธ์แบบต่อหลายแบบ โดยในตัวอย่างจะหมายความว่า สินค้า 1 ชิ้นจะสามารถมีได้หลายขนาดนั้นเอง
Many-to-many Relationship: แบบสุดท้ายนั้นคือความสัมพันธ์หลายแบบเข้าด้วยกัน โดยในตัวอย่างหมายความว่า สินค้าหลายๆชิ้นนั้นสามารถมีได้หลายสี
ประเภทของคำสั่งใน SQL
อะไรกัน SQL มีประเภทของคำสั่งด้วยหรอ…ใช่แล้วครับ เพราะ SQL ไม่ใช่ภาษาที่มีประโยชน์ในการดึงข้อมูลอย่างเดียว แต่ยังมีหน้าที่อีกมากมายเลย โดยปกติแล้วชุดคำสั่งของ SQL จะแบ่งเป็น 5 หัวข้อ คือ
- DDL(Data Definition Language): เป็นกลุ่มคำสั่งที่ไว้สำหรับการสร้าง/กำหนดรูปแบบของโครงสร้างฐานข้อมูล (Database schema) คำสั่งต่างๆของกลุ่มนี้เลยจะเป็นการสร้าง ลบ เปลี่ยนชื่อ โครงสร้างฐานข้อมูลนั้นเอง
ตัวอย่างคำสั่ง เช่น CREATE DROP RENAME เป็นต้น - DQL (Data Query Language): เป็นคำสั่งไว้เรียกขอข้อมูลนั้นเอง
ตัวอย่างคำสั่งก็คือ SELECT - DML(Data Manipulation Language): ชุดคำสั่งสำหรับการจัดการตัวข้อมูลจริงๆเลย
ตัวอย่างคำสั่ง เช่น INSERT UPDATE DELETE - DCL(Data Control Language): เป็นชุดคำสั่งสำหรับการให้สิทธิ(Grant)/ยกเลิกสิทธิ(Revoke)ของผู้ใช้ฐานข้อมูล
ตัวอย่างคำสั่ง เช่น GRANT REVOKE - TCL(transaction Control Language): ชุดคำสั่งสำหรับการจัดการการกระทำของผู้สร้างฐานข้อมูล เช่น การบันทึก (COMMIT) และการกู้คืน (ROLLBACK)
ตัวอย่างคำสั่ง เช่น COMMIT ROLLBACK SAVEPOINT เป็นต้น
แล้วคำสั่งมีตั้งหลายประเภทอย่างงี้เราจะได้ใช้ทั้งหมดเลยหรอ😫…คำตอบคือขึ้นอยู่กับงานด้วยครับ หากเป็นงานของ Data Analytics, Data Scientist ที่มีฐานข้อมูลแล้วแต่แค่ต้องการดึงข้อมูลมาใช้ก็จะเน้นไปที่การใช้คำสั่งแบบ DQL อย่างเดียวครับ แต่ถ้าหากเป็นงานที่ต้องสร้าง/อัพเดทฐานข้อมูล เช่น Data Engineer อาจจะต้องใช้คำสั่งแบบอื่นด้วย
โปรแกรม Relational Database ของแต่ละผู้ให้บริการ
ทำไมถึงต้องศึกษาเรื่องผู้ให้บริการ Database ก่อน…ผู้ให้บริการต่างๆของ Database นั้นมีหลายเจ้ามาก และคำสั่ง SQL บางอัน(ส่วนน้อยมาก)จะไม่เหมือนกันอีกด้วย ดังนั้นผมจะ List รายชื่อผู้ให้บริการ Database คร่าวๆแล้วกันครับ (ส่วนถ้าอยากรู้รายละเอียดก็สามารถไปศึกษาเพิ่มเติมในแต่ละตัวได้เลยครับ😄)
tip: ถ้าสำหรับผู้เริ่มต้นและยังไม่มีฐานข้อมูลเป็นของตัวเอง ควรเริ่มจาก SQLite เนื่องจากเป็น Free Software ที่ใช้งานง่าย สามารถนำข้อมูลในรูปแบบตารางจาก Excel หรือจากที่ไหนก็ได้เพื่อมาลอง Query ข้อมูลเล่นๆได้
เท่านี้เราก็พอเข้าใจหลักการเบื้องต้นของ SQL แล้ว Part ถัดไปจะเป็นการเขียน SQL กันแล้วนะเย่!!!
สุดท้ายนี้ ถ้าชอบหรือต้องการสอบถามหรือพูดคุยเพิ่มเติม กดไปที่เพจ ดาต้าไส้แห้ง หรือ LinkedIn ข้างล่างเลยจ้า แล้วเรื่องถัดไปจะเป็นเรื่องอะไรก็ขอให้กดติดตามกันไว้ด้วยนะคร้าบ😍