Skip to main content

พาทัวร์ภาษา SQL เบื้องต้น

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

ภาษา SQL เป็นภาษาที่เราจะใช้สื่อสารกับฐานข้อมูล จะทำให้ server อย่าง nodejs เป็นสามารถพูดคุยกับฐานข้อมูล เพื่อทำการ ดึงข้อมูล หรือ update ข้อมูลไปได้

เราจะย้อนกลับไปดูภาพก่อนหน้านี้กัน เช่นตอน insert จริงๆแล้ว phpmyadmin เองก็มีการแสดง SQL ออกมากำกับเช่นกันว่า ใช้คำสั่งอะไรอยู่

phpmyadmin-1

หมายความว่าจริงๆแล้ว phpmyadmin เองก็กำลังสื่อสารกับ MySQL ด้วยภาษา SQL เช่นกัน (เพียงแต่มีหน้าจอ UI ช่วยทำให้สะดวกขึ้นเฉยๆ)

เริ่มต้น SQL ใน phpmyadmin

วิธีการลองคำสั่ง SQL ผ่าน phpmyadmin กดตรง SQL > จะเข้ามาหน้าพิมพ์คำสั่ง SQL ได้

sql-1

ปูพื้นฐานของ CRUD ใน SQL

สำหรับใน Session เราจะพารู้จักคำสั่ง 4 ตระกูลที่สามารถใช้ทำตามคุณสมบัติหลักของการจัดการฐานข้อมูล CRUD ได้คือ

  • C = Create (สามารถสร้างข้อมูลได้)
  • R = Read (สามารถอ่านหรือค้นหาข้อมูลได้)
  • U = Update (สามารถแก้ไขข้อมูลได้)
  • D = Delete (สามารถลบข้อมูลได้)

1. C = Create = Insert ข้อมูล

Pattern คำสั่ง SQL คือ

INSERT INTO <ชื่อตาราง> (column ทั้งหมดที่ต้องการ insert) VALUES(ข้อมูลแต่ละตัวที่จะใส่ column)

ตัวอย่างเช่น ถ้าต้องการใส่ข้อมูล 1 ตัวที่มีค่า

  • firstname = ไมค์
  • lastname = ล็อปสเตอร์
  • age = 14
  • gender = ชาย
  • interests = ฟุตบอล, เขียนโปรแกรม
  • description = เป็นคนขยันหมั่นเพียร

คำสั่งก็จะหน้าตาประมาณนี้

INSERT INTO `users` (`firstname`, `lastname`, `age`, `gender`, `interests`, `description`) VALUES ('ไมค์', 'ล็อปสเตอร์', '14', 'ชาย', 'ฟุตบอล, เขียนโปรแกรม', 'เป็นคนขยันหมั่นเพียร');

ทดลองใส่ดูแล้วกด Go ในหน้า SQL จะได้ผลลัพธ์ออกมาแบบนี้ sql-3

  • การใส่ column และ value ต้องตรงกันในแต่ละตำแหน่งที่อยู่ใน ()
Primary key ไม่ต้องใส่

ข้อสังเกต หาก field นั้นเป็น Primary key (เช่น id) ไม่จำเป็นต้องใส่ใน insert ระบบจะทำการใส่ให้เอง

2. R = Read = Select, Where ข้อมูล

ขอแบ่งย่อยออกเป็น 3 เรื่องคือ

  1. ดึงข้อมูลทั้งหมดออกมาทุก column

Pattern คำสั่ง SQL คือ

SELECT * from <ชื่อตาราง>;

ตัวอย่าง เช่น หากต้องการข้อมูลทั้งหมดของ table users ออกมา

SELECT * from users;

ตัวอย่าง ผลลัพธ์ออกมาผ่าน SQL

sql-6

  1. ระบุ column ที่ต้องการแสดงผล

Pattern คำสั่ง SQL คือ

SELECT <ชื่อ column ที่ต้องการเลือก> from <ชื่อตาราง>;

ตัวอย่าง เช่น หากต้องการหยิบ Column firstname, lastname จาก table users

SELECT firstname, lastname from users;

ก็จะสามารถหยิบออกมาเฉพาะ column ที่เลือกได้ (ตามภาพตัวอย่างด้านล่าง)

sql-2

  1. ค้นหาข้อมูลด้วย where

Pattern คำสั่ง SQL คือ

SELECT <ชื่อ column ที่ต้องการเลือก หรือ * ถ้าเอาทั้งหมด> from users where <column ที่ต้องการค้นหา>=<ค่าอะไร>;
  • ระบุ column ที่ต้องการหยิบออกมาหรือ * ถ้าเอาทุก column
  • หลัง where ระบุ column และ value ที่ต้องการค้นหา

ตัวอย่าง เช่น หยิบทุก column ของ table users ออกมาโดยใส่ where firstname='ทดสอบ' เพื่อหาข้อมูล 'ทดสอบ' จาก column ชื่อ firstname

SELECT * from users where firstname='ทดสอบ';

3. U = Update = Update ข้อมูล

Pattern คือ

UPDATE <ชื่อตาราง> SET <column อะไร> = <เปลี่ยนค่าเป็นอะไร> WHERE <โดยเงื่อนไขอะไร ใช้เหมือน select>
  • ระบุ table ที่ต้องการแก้ไข
  • ระบุ column ที่ต้องการแก้ไขและค่าที่ต้องการเปลี่ยน
  • ระบุเงื่อนไข (เหมือนกับการใช้ WHERE ตอน search) คือ ระบุ column และ value ที่ต้องการสร้างเงื่อนไขไว้ว่าจะเปลี่ยนกับแค่ตัวไหน

ตัวอย่างที่ 1 เราจะหา users id = 2 เพื่อทำการ update ข้อมูล firstname เปลี่ยนจากค่าที่เป็นอยู่เป็นคำว่า "เปลี่ยนชื่อ" แทน

UPDATE `users` SET `firstname` = 'เปลี่ยนชื่อ' WHERE `users`.`id` = 2;

ตัวอย่างที่ 2 เราจะหาข้อมูล firstname ที่ชื่อ "ไมค์สอง" เพื่อทำการ update ข้อมูล firstname เปลี่ยนจากค่าที่เป็นอยู่เป็นคำว่า "ไมค์สาม" แทน (เคสนี้จะเปลี่ยนเฉพาะคนที่มี firstname ว่า "ไมค์สอง" เท่านั้น)

ตัวอย่างการรัน SQL

sql-5

ผลลัพธ์หลังรันเสร็จ

sql-6

4. D = Delete = Delete ข้อมูล

Pattern SQL คือ

DELETE FROM <ชื่อ table> WHERE <โดยเงื่อนไขอะไร>
  • ระบุ table ที่ต้องการจะเข้าไปลบ
  • ท่าระบุเงื่อนไข (เหมือนกับการใช้ WHERE ตอน search) คือ ระบุ column และ value ที่ต้องการสร้างเงื่อนไขไว้ ว่าจะลบเฉพาะข้อมูลอะไรบ้าง (หากไม่ใส่ = ลบทุกตัว)

ตัวอย่าง เช่น ต้องการลบ user ที่มี id = 1 ออกจาก table users

DELETE FROM `users` WHERE `id` = 1

ตัวอย่างการรัน SQL

sql-7

ผลลัพธ์หลังรันเสร็จ

sql-8

เพิ่มเติม SQL

จริงๆ ยังมีเรื่อง MySql อีกหลายอย่างมาก เช่น

  • การสร้างหลายตาราง
  • Foreign key (การที่ key เชื่อมต่อกันในแต่ละตารางเช่น product ที่ key ของ user เพื่อแสดงว่า product นั้นเป็นของคนไหน)
  • การรัน SQL JOIN table

แต่เราจะเก็บกันไว้ก่อน พื้นฐานเท่านี้เพียงพอสำหรับให้เราลองทำระบบเก็บ Form จากตอนต้นที่เราทำไปได้แล้ว หากสนใจเพิ่มเติม สามารถอ่าน Reference ด้านล่าง W3School หรือ ลองเล่นใน Codeacademy เพิ่มเติมได้

Reference (อ่านเพิ่มเติมได้)

ใน Session จบเพียงเท่านี้ ต่อไปเราจะพา node มาต่อกับ mysql เพื่อทำ CRUD กันใน node กัน