Image Description
Soranat Chamkring
  • 22 February 2024
  • 25 mins read

การใช้ภาษา SQL เพื่อค้นหาข้อมูลอย่างง่าย

Toy

22 February 2024

พี่ทอย ในเพจ Data Rockie มีสอน SQL แบบไวๆ มั้ัย ?

เดี๋ยวพี่จะเล่าให้ฟังๆ

    ทุกวันนี้โลกเราเต็มไปด้วยข้อมูลขนาดใหญ่ ไม่ว่าจะบริษัทใดๆก็ล้วนมีการจัดเก็บข้อมูลทั้งแบบที่มีโครงสร้าง Structure data และแบบที่ไม่มีโครงสร้าง Unstructure Data ภาษา SQL จึงเป็นหนึ่งในภาษาสำหรับเขียนเพื่อติดต่อและจัดการกับฐานข้อมูล เป็นภาษาที่จำเป็นสำหรับคนที่สนใจหรือต้องการทำงานสาย Web Developer หรือแม้แต่ด้าน Data จำเป็นต้องรู้ภาษานี้ไว้ครับ บทความนี้เราจะมาเรียน SQL จาก 0 กันเลย

ภาษา SQL คืออะไร ?

    SQL หรือ Structure Query Language ถูกพัฒนาตั้งแต่ปี 1970 เป็นภาษาที่นักพัฒนาจะใช้สำหรับการสื่อสารและจัดการข้อมูลเชิงสัมพันธ์ (Relational Database) สำหรับ Database Management system ที่มีใช้อยู่ในองค์กรตั้งแต่ขนาดเล็กไปจนถึงองค์กรที่มีขนาดใหญ่มากๆ โดยจะมีผู้ให้บริการที่แตกต่างกันออกไป ทั้งแบบที่เป็น On Cloud และ On Promise ซึ่งอาจจะมีฟีเจอร์การใช้งานบางส่วนแตกต่างกัน แต่โดยทั่วไปแล้วคำสั่งพื้นฐานจะไม่หนีกันมากนัก สามารถนำความรู้ไปต่อยอดได้ผ่านการอ่าน Document ของผู้ให้บริการนั้นๆ

ทำไมต้อง SQL ?

    ภาษา SQL นั้นมีความเรียบง่ายในการใช้งาน จึงทำให้ถูกใช้ในการพัฒนางานเกี่ยวกับข้อมูล และด้านการพัฒนาเว็บแอพพลิเคชั่น เป็นส่วนใหญ่ ดังนั้นภาษานี้จึงเหมาะกับผู้พัฒนาเว็บไซต์(Software Developer) และ นักวิเคราะห์ข้อมูล (Data Analyst) ภาษา SQL เป็นภาษาที่ใช้เฉพาะการจัดการข้อมูลเชิงสัมพันธ์เท่านั้น ไม่สามารถใช้แสดงผลตรงๆ ได้ แต่จะอาศัยภาษาอื่นในการนำข้อมูลออกไปใช้ เช่น Python , Go , Java ,Nodejs etc.

คำสั่ง SQL ซับซ้อนหรีอไม่ ?

    ถ้าหาก HTML เป็นชุดคำสั่งที่เขียนง่ายได้มากเท่าไร ให้ทุกคนจำไว้ว่า SQL นั้นเขียนง่ายกว่ามาก (เฉพาะในเชิงการเขียน ไม่รวมโลจิกของชุดข้อมูลนะ) เรียกว่าถ้าเราแม่นภาษาอังกฤษนิดหน่อย ก็สามารถจะเป็นเทพ SQL ได้เลย แต่แนะนำให้ใช้งานบ่อยๆ นะครับ พอยิ่งเราใช้บ่อยมากขึ้น เราจะยิ่งเขียนได้ดี และสามารถปรับปรุงประสิทธิภาพของโค้ดได้ดียิ่งขึ้น

การจัดการข้อมูลด้วย SQL ปกติใช้งานยังไงได้บ้าง ?

    เนื่องจาก SQL นั้นมีหลายวิธีในการเล่นกับข้อมูล และสามารถจัดหมวดหมู่คำสั่ง SQL ได้ตามนี้

ProcessDescription
DDLคำสั่ง SQL ที่ออกแบบโครงสร้างฐานข้อมูล วิศวกรฐานข้อมูลใช้ DDL เพื่อสร้างและแก้ไขวัตถุฐานข้อมูลตามความต้องการของธุรกิจ ตัวอย่างเช่น วิศวกรฐานข้อมูลใช้คำสั่ง CREATE เพื่อสร้างวัตถุฐานข้อมูลเช่นตาราง มุมมอง และดัชนี
DQLประกอบด้วยคำสั่งสำหรับการดึงข้อมูลที่เก็บไว้ในฐานข้อมูลแบบเชิงสัมพันธ์ การใช้งานซอฟต์แวร์ใช้คำสั่ง SELECT เพื่อกรองและส่งกลับผลลัพธ์เฉพาะจากตาราง SQL
DML เขียนข้อมูลใหม่หรือปรับเปลี่ยนระเบียนที่มีอยู่ในฐานข้อมูลแบบเชิงสัมพันธ์ ตัวอย่างเช่น แอปพลิเคชันใช้คำสั่ง INSERT เพื่อเก็บบันทึกใหม่ในฐานข้อมูล
DCLเพื่อจัดการหรืออนุญาตการเข้าถึงฐานข้อมูลสำหรับผู้ใช้รายอื่น ตัวอย่างเช่นพวกเขาสามารถใช้คำสั่ง GRANT เพื่ออนุญาตให้บางแอปพลิเคชันจัดการกับหนึ่งตารางหรือมากกว่าได้
TCLEngine เชิงสัมพันธ์ใช้ภาษาควบคุมการทำธุรกรรม (TCL) เพื่อใเปลี่ยนแปลงฐานข้อมูลโดยอัตโนมัติ ตัวอย่างเช่น ฐานข้อมูลใช้คำสั่ง ROLLBACK เพื่อยกเลิกการทำธุรกรรมที่ผิดพลาด

คำสั่งที่ใช้งาน (SELECT Statement)

    เนื่องจาก SQL นั้นมีหลายวิธีในการเล่นกับข้อมูล และสามารถจัดหมวดหมู่คำสั่ง SQL ได้ตามนี้ ซึ่งเราจะเรียกการเขียน syntax เพื่อทำงานบางสิ่งบางอย่างว่า การเขียน Statement

SELECT 
  *  
FROM  mtcars 

    การทำงานของคำสั่งด้านบนคือ ให้ดึงข้อมูลทุกอย่างที่อยู่ในตาราง mtcars มาแสดงผล โดยเครื่องหมายถึง * ใน SQL จะหมายถึงการเลือกทุกอย่างใน Statement นั้น

คำสั่งที่จัดกลุ่มข้อมูล (Aggregate Data)

    คำสั่งเกี่ยวกับการใช้ Window Function บางตัวจะต้องมีการใส่ Statement เพื่อเติม เช่น GROUP BY อีกด้วย วิธีการใช้ GROUP BY คือการจัดกลุ่มคอลัมน์ที่เราไม่ได้ใช้ Aggregate Function เช่น Sum() , Max() , Min() ซึ่งเราสามารถใช้ชื่อคอลัมน์นั้นใน GROUP By ก็ได้ หรือจะใช้ตัวเลขที่อ้างอิงจากคอลัมน์ที่เราดึงออกมาตามลำดับก็ได้ นอกจากนี้ยังมี Window Function ตัวอื่นๆ ที่จะมีบทความแยกต่างหากอีกหลายตัวตามมา

SELECT 
  id , 
  sum(score) as score 
FROM mtcars
GROUP BY id /*ใช้ 1 */

คำสั่งเพิ่มแถวด้วย (INSERT)

    Insert คือ คำสั่งที่ใช้สำหรับ 'เพิ่ม' ข้อมูลในแถวใหม่ของตาราง นี่คือตัวอย่างไวยากรณ์ของคำสั่ง โดยจะใช้คีย์เวิร์ด INSERT

INSERT INTO
table_name (column1, column2)
VALUES (value1, value2)

คำสั่งอัพเดทข้อมูลที่ตรงกับเงื่อนไข (UPDATE)

    Update คือ คำสั่งที่ใช้สำหรับ 'แก้ไข' ข้อมูลในแถว (record) ของตาราง นี่คือตัวอย่างไวยากรณ์ของคำสั่ง โดยจะใช้คีย์เวิร์ด UPDATE

UPDATE table_name
SET column1 = value1,
column2 = value2
WHERE condition;

คำสั่งลบข้อมูลในตาราง (DELETE)

    Delete คือ คำสั่งที่ใช้สำหรับ 'ลบ' ข้อมูลในแถว (record) ของตาราง นี่คือตัวอย่างไวยากรณ์ของคำสั่ง โดยจะใช้คีย์เวิร์ด DELETE

DELETE FROM table_name
WHERE condition;

คำสั่งเชื่อม TABLE ด้วย JOIN มีทั้งหมด 4 รูปแบบ

    วันนี้เราจะมาแนะนำวิธีการใช้งาน พร้อมภาพตัวอย่างของการเชื่อมข้อมูลด้วย SQL JOIN กัน โดยจะมีทั้ง 4 รูปแบบตามที่ได้กล่าวไว้

INNER JOIN

หลักการ Inner Join
Caption : หลักการ Inner Join

    INNER JOIN จะเป็นคำสั่งการรีเทิร์นเฉพาะค่าที่ตรงกันระหว่าง 2 ตาราง และจะแสดงผลข้อมูลของทุกแถวของทั้งสองตาราง

SELECT *
FROM table1
INNER JOIN table2
ON table1.name = table2.name;

    โค้ดตัวอย่างแสดงให้เห็นว่ามีการเชื่อมกันด้วย INNER JOIN ด้วยการนำคอลัมน์ name ของทั้ง 2 ตาราง (table1 , table2) มาจับคู่กัน ซึ่งจะส่งผลลัพธ์กลับมาเฉพาะแถวที่ name ของทั้ง 2 ตารางนั้นมีชื่อเดียวกัน

ตัวอย่าง Inner Join
Caption : ตัวอย่าง Inner Join

LEFT JOIN

หลัก Left Join
Caption : หลัก Left Join

    Left Join จะเป็นคำสั่งการรีเทิร์นข้อมูลทุกแถวของตารางด้านซ้าย (Left Table) และรีเทิร์นค่าที่ตรงกันเท่านั้นของตารางด้านขวา (Right Table) ถ้าไม่มีค่าที่ตรงกันจากทางตารางด้านขวา จะรีเทิร์นค่า NULL (ค่าว่างเปล่า)

SELECT *
FROM table1
LEFT JOIN table2
ON table1.name = table2.name;

    โค้ดตัวอย่างแสดงให้เห็นว่ามีการเชื่อมกันด้วย LEFT JOIN ด้วยการนำคอลัมน์ name ของทั้ง 2 ตาราง (table1 , table2) มาจับคู่กัน ซึ่งจะส่งผลลัพธ์ของ ตารางด้านซ้ายมาทั้งหมด ส่วนตารางด้านขวา หากไม่มี name ที่ตรงกันก็จะส่งมาเป็นค่า Null

ตัวอย่าง Left Join
Caption : ตัวอย่าง Left Join

RIGHT JOIN

หลักการ Right Join
Caption : หลักการ Right Join

    Right Join จะเป็นคำสั่งการรีเทิร์นข้อมูลทุกแถวของตารางด้านขวา (Right Table) และรีเทิร์นค่าที่ตรงกันเท่านั้นของตารางด้านซ้าย (Left Table) ถ้าไม่มีค่าที่ตรงกันจากทางตารางด้านขวา จะรีเทิร์นค่า NULL (ค่าว่างเปล่า) พูดง่าย ๆ คือคล้ายกันกับ Left Join เพียงแต่ตรงข้ามกัน

SELECT *
FROM table1
RIGHT JOIN table2
ON table1.name = table2.name;

    โค้ดตัวอย่างแสดงให้เห็นว่ามีการเชื่อมกันด้วย RIGHT JOIN ด้วยการนำคอลัมน์ name ของทั้ง 2 ตาราง (table1 , table2) มาจับคู่กัน ซึ่งจะส่งผลลัพธ์ของ ตารางด้านขวามาทั้งหมด ส่วนตารางด้านซ้าย หากไม่มี name ที่ตรงกันก็จะส่งมาเป็นค่า Null

ตัวอย่าง Right Join
Caption : ตัวอย่าง Right Join

FULL OUTER JOIN

หลักการ Full Outer Join
Caption : หลักการ Full Outer Join

    Full Outer Join จะเป็นคำสั่งการรีเทิร์นข้อมูลทุกแถวของทั้ง 2 ตาราง ถ้าไม่มีค่าที่ตรงกันจากทั้งสองตาราง จะรีเทิร์นค่า NULL (ค่าว่างเปล่า)

SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.name = table2.name;

    โค้ดตัวอย่างแสดงให้เห็นว่ามีการเชื่อมกันด้วย FULL OUTER JOIN ด้วยการนำคอลัมน์ name ของทั้ง 2 ตาราง (table1 , table2) มาจับคู่กัน ซึ่งจะส่งผลลัพธ์ของแถวของข้อมูลทั้งหมด

ตัวอย่าง Full outer Join
Caption : ตัวอย่าง Full outer Join

สรุปเนื้อหา

    ภาษา SQL เป็นเครื่องที่ช่วยให้เราสามารถจัดการข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ และเป็นหนึ่งในภาษาที่นักพัฒนาใช้งานค่อยข้างมาก เนื่องจากความง่ายในการอ่าน Syntax ปัจจุบันมีการใช้ SQL เป็นตัวเชื่อมต่อระหว่าง Server กับผู้ใช้งานผ่าน Service ต่างๆ มากมายให้เลือกใช้ ทำให้คนทั่วไปเองก็สามารถใช้งานได้อย่างเต็มประสิทธิภาพเช่นกัน

    อย่างไรก็ตาม SQL นั้นก็ยังสามารถถูกโจมตีจากผู้ไม่ประสงค์ดีได้ด้วยการทำ SQL Injection ในหลายๆรูปแบบ เพื่อความปลอดภัยเราควรให้คนที่มีความรู้ในการจัดการฐานข้อมูลมาช่วยดูแลเรื่องความปลอดภัย รวมถึงการไม่เก็บรหัส หรือ Credential ที่เชื่อมต่อ Database ไว้ในที่สาธารณะ เช่น Github public Project , Google Drive หรือแม้กระทั่งใน Chat ต่างๆก็ตาม

No reviews yet. Be the first to leave a comment!

Share your experience with this Blog

0 Reviews

บทความแนะนำ

การทำงานพื้นฐานของเว็บไซต์
How Website work?

เรียนรู้วิธีการทำงานของเว็บไซต์ในทุกขั้นตอน ฉบับมือใหม่

อ่านบทความที่เกี่ยวข้อง
BigQuery Dataset Schema
BigQuery Schema

ตรวจสอบ Dataset และ Table ใน Bigquery Project

อ่านบทความที่เกี่ยวข้อง
SQL Easy ใช้ง่ายนิดเดียว
SQL Basic

ใช้ภาษา SQL เพื่อการทำงานด้าน Data Analytics ขั้นพื้นฐาน

อ่านบทความที่เกี่ยวข้อง