[Fundamental Data Analytics & Data Scientist EP.06] อยากอัพสกิล Data ต้องทำความรู้จักกับ SQL Part1!!!

Pasith Thanapatpisarn
3 min readMar 14, 2021

--

“ถ้าอยากจะทำงานในบริษัทที่มีการเก็บข้อมูลจำนวนมากไว้ในฐานข้อมูล (Database) จะต้องใช้ SQL ให้เป็น”

Meme of the day — source

ถ้าข้อมูลมีจำนวนไม่มาก และไม่จำเป็นจะต้องมีความเชื่อมโยงกัน หรือข้อมูลที่เป็น mini project-based ก็อาจจะใช้เพียง Microsoft Excel ในการเก็บข้อมูลก็ได้ แต่ถ้าหากข้อมูลมีจำนวนมาก (มากจนเราเรียกกันว่า Big Data นั้นเอง) จนต้องเก็บเป็นฐานข้อมูลที่มีความเชื่อมโยงกันแบบซับซ้อนไปหมดหล่ะ? เราก็คงต้องใช้ SQL มาช่วยในการดึงข้อมูลกันแล้ว

SQL database schema — source

แล้ว SQL คืออะไรหล่ะ? … blog นี้จะมาให้คำตอบกัน

SQL คืออัลลัย?

SQL ย่อมาจาก Structured Query Language แปลเป็นไทยตรงๆเลยก็คือ “ภาษาที่ใช้ในการขอ(Query)ข้อมูล” ซึ่ง SQL จะมีประโยชน์มากในข้อมูลที่มีลักษณะเป็นโครงสร้างเป็นตาราง หรือ Structured Data โดยหน้าที่หลักๆของมันคือภาษาเพื่อการจัดการข้อมูลดังกล่าวที่มีความเชื่อมโยงกัน(Relational Database) มีชื่อภาษาอังกฤษเท่ๆเลยก็คือ Relational Database Management System: RDBMS

tip: สำหรับข้อมูลที่ “ไม่ได้อยู่ในโครงสร้างแบบตาราง(Non-Relational Database)” เราจะเรียกการขอข้อมูลว่า NoSQL ซึ่งในปัจจุบันก็จะมีผู้ให้บริการเก็บฐานข้อมูลในประเภทนี้อยู่เยอะมาก เช่น MongoDB เป็นต้น

SQL Example — พอจะอ่านออกกันมั้ยว่าคำสั่งนี้ทำอะไร :)

โดยใน Part1 นี้เราจะมาอธิบายสิ่งที่เราต้องรู้ก่อนที่จะไปเขียน SQL และใน Part ถัดไปจะเป็นการลงมือเขียน SQL กันนะครับ (หวังว่าเราจะได้เจอกันทั้งสอง Part น้า😙)

มีอะไรที่เราต้องรู้ก่อนที่จะไปเขียน SQL บ้าง

  1. ER Diagram
  2. ประเภทของคำสั่งใน SQL
  3. โปรแกรม Relational Database ของแต่ละผู้ให้บริการ

ER Diagram

อย่างที่เราบอกในตอนแรกว่า SQL จะใช้งานสำหรับฐานข้อมูลที่มีความเชื่อมโยงกัน ดังนั้นเราจะต้องมาทำความรู้จักกับวิธีการแสดงความสัมพันธ์ของข้อมูลใน SQL หรือที่เรียกกันว่า Entity-Relationship Diagram: ER Diagram เสียก่อน

ER diagram example — source

ซึ่ง ER Diagram มันก็คือตารางแสดงความสัมพันธ์ของข้อมูลนั้นเอง จากตัวอย่างจะมีความหมายว่า

  • ตารางมีทั้งหมด 6 ตารางตามจำนวนช่องสี่เหลี่ยม (Entity)
  • รายละเอียดของแต่ละตาราง คือตัวแปร (Attribute) หรือคอลัมน์ที่มีอยู่ในตาราง
  • เส้นที่เชื่อมผ่านระหว่างตารางนั้นก็คือ Relationship ระหว่างตารางนั้นเอง

โดยเมื่อพูดถึงเรื่องของความสัมพันธ์ระหว่างตารางจะเห็นได้ว่าเส้นที่เชื่อมกันระหว่างตารางนั้นมีหลายแบบเลยคือ

One-to-one Relationship

One-to-one Relationship: คือความสัมพันธ์แบบหนึ่งต่อหนึ่ง หมายความว่าสินค้าหนึ่งชิ้น จะมีชื่อได้แค่ชื่อเดียวเท่านั้น

One-to-many Relationship

One-to-many Relationship: ซึ่งเป็นความสัมพันธ์แบบต่อหลายแบบ โดยในตัวอย่างจะหมายความว่า สินค้า 1 ชิ้นจะสามารถมีได้หลายขนาดนั้นเอง

Many-to-many Relationship

Many-to-many Relationship: แบบสุดท้ายนั้นคือความสัมพันธ์หลายแบบเข้าด้วยกัน โดยในตัวอย่างหมายความว่า สินค้าหลายๆชิ้นนั้นสามารถมีได้หลายสี

ประเภทของคำสั่งใน SQL

อะไรกัน SQL มีประเภทของคำสั่งด้วยหรอ…ใช่แล้วครับ เพราะ SQL ไม่ใช่ภาษาที่มีประโยชน์ในการดึงข้อมูลอย่างเดียว แต่ยังมีหน้าที่อีกมากมายเลย โดยปกติแล้วชุดคำสั่งของ SQL จะแบ่งเป็น 5 หัวข้อ คือ

  1. DDL(Data Definition Language): เป็นกลุ่มคำสั่งที่ไว้สำหรับการสร้าง/กำหนดรูปแบบของโครงสร้างฐานข้อมูล (Database schema) คำสั่งต่างๆของกลุ่มนี้เลยจะเป็นการสร้าง ลบ เปลี่ยนชื่อ โครงสร้างฐานข้อมูลนั้นเอง
    ตัวอย่างคำสั่ง เช่น CREATE DROP RENAME เป็นต้น
  2. DQL (Data Query Language): เป็นคำสั่งไว้เรียกขอข้อมูลนั้นเอง
    ตัวอย่างคำสั่งก็คือ SELECT
  3. DML(Data Manipulation Language): ชุดคำสั่งสำหรับการจัดการตัวข้อมูลจริงๆเลย
    ตัวอย่างคำสั่ง เช่น INSERT UPDATE DELETE
  4. DCL(Data Control Language): เป็นชุดคำสั่งสำหรับการให้สิทธิ(Grant)/ยกเลิกสิทธิ(Revoke)ของผู้ใช้ฐานข้อมูล
    ตัวอย่างคำสั่ง เช่น GRANT REVOKE
  5. 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 ข้างล่างเลยจ้า แล้วเรื่องถัดไปจะเป็นเรื่องอะไรก็ขอให้กดติดตามกันไว้ด้วยนะคร้าบ😍

--

--

Pasith Thanapatpisarn
Pasith Thanapatpisarn

Written by Pasith Thanapatpisarn

Analyst | Blogger named Data Sci Haeng

No responses yet