🗄️ MySQL/MariaDB

คู่มือการใช้งาน MySQL และ MariaDB: สร้างและจัดการตารางด้วยคำสั่ง CREATE, ALTER และ TRUNCATE

8 นาที 15 views บันทึกเป็น PDF
คู่มือการใช้งาน MySQL และ MariaDB: สร้างและจัดการตารางด้วยคำสั่ง CREATE, ALTER และ TRUNCATE

เรียนรู้วิธีจัดการฐานข้อมูล MySQL และ MariaDB ตั้งแต่การสร้างตาราง (CREATE TABLE) การปรับโครงสร้าง (ALTER TABLE) ไปจนถึงการล้างข้อมูล (TRUNCATE) แบบมือโปร

ทำความรู้จักกับ Database และโครงสร้างตาราง

ก่อนจะเริ่มเขียนโค้ด เราต้องเข้าใจก่อนว่า MySQL และ MariaDB คือระบบจัดการฐานข้อมูล (Database Management System) ที่ทำหน้าที่เป็นเหมือนสมุดจดบันทึกข้อมูลขนาดใหญ่ ข้อมูลเหล่านี้ไม่ได้กองรวมกันมั่วๆ แต่ถูกจัดเก็บไว้ในรูปแบบของ Table (ตาราง) ที่มีคอลัมน์และแถวเหมือนตารางใน Excel

การเข้าใจโครงสร้างตารางเป็นทักษะพื้นฐานสำคัญของโปรแกรมเมอร์ เพราะหากเราออกแบบตารางไว้ดี การดึงข้อมูลไปแสดงผลบนแอปพลิเคชันจะทำได้รวดเร็วและไม่ซับซ้อน ถ้าเปรียบเทียบง่ายๆ ตารางก็เหมือนกับแฟ้มเก็บประวัติลูกค้า ที่ต้องมีช่องระบุชื่อ นามสกุล และเบอร์โทรศัพท์แยกกันให้ชัดเจน

หากเราต้องการสร้างระบบสมาชิก เราต้องกำหนดว่าในตารางสมาชิกจะมีข้อมูลอะไรบ้าง เช่น Primary Key (กุญแจหลักที่ใช้ระบุตัวตนของข้อมูลแต่ละแถวไม่ให้ซ้ำกัน) เพื่อให้เราอ้างอิงถึงข้อมูลนั้นได้แม่นยำ การวางแผนโครงสร้างก่อนลงมือเขียนคำสั่งจริงจะช่วยลดปัญหาการแก้ไขข้อมูลในอนาคต

การสร้างตารางด้วยคำสั่ง CREATE TABLE

เมื่อเราเข้าใจโครงสร้างแล้ว ขั้นตอนแรกคือการใช้คำสั่ง CREATE TABLE เพื่อสร้างตารางขึ้นมาบนฐานข้อมูล คำสั่งนี้จะระบุชื่อตารางและรายละเอียดของแต่ละคอลัมน์ที่เราต้องการเก็บข้อมูล โดยเราต้องกำหนด Data Type (ประเภทของข้อมูล) ให้เหมาะสม เช่น เก็บตัวเลข หรือเก็บข้อความ

มือใหม่มักลืมกำหนดประเภทข้อมูลให้เหมาะสม ทำให้เปลืองพื้นที่จัดเก็บโดยไม่จำเป็น หรือบางครั้งลืมกำหนดค่าเริ่มต้น ซึ่งอาจทำให้เกิดข้อผิดพลาดเมื่อเราพยายามบันทึกข้อมูลว่างเปล่าลงไปในตาราง การฝึกเขียนคำสั่งสร้างตารางให้เป็นนิสัยจะช่วยให้เราเห็นภาพรวมของระบบได้ชัดเจนยิ่งขึ้น

ลองมาดูตัวอย่างการสร้างตารางเก็บข้อมูลผู้ใช้งานกันครับ เราจะกำหนดให้ id เป็นเลขลำดับและ name เป็นชื่อผู้ใช้งาน

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY, -- id เป็นเลขจำนวนเต็ม เพิ่มค่าอัตโนมัติ และเป็นคีย์หลัก
    name VARCHAR(100), -- name เป็นข้อความยาวไม่เกิน 100 ตัวอักษร
    email VARCHAR(100) -- email เป็นข้อความยาวไม่เกิน 100 ตัวอักษร
);

ในโค้ดนี้ INT คือเลขจำนวนเต็ม AUTO_INCREMENT คือการสั่งให้ฐานข้อมูลใส่เลขเพิ่มขึ้นเองทีละหนึ่ง ส่วน VARCHAR คือช่องเก็บข้อความที่มีความยาวจำกัด ผลลัพธ์ที่ได้คือตารางชื่อ users ที่พร้อมให้เรานำข้อมูลไปใส่ได้ทันที

การปรับเปลี่ยนโครงสร้างด้วย ALTER TABLE

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

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

ตัวอย่างด้านล่างนี้คือการเพิ่มคอลัมน์ birth_date เข้าไปในตาราง users ที่เราสร้างไว้ก่อนหน้า

ALTER TABLE users ADD birth_date DATE; -- เพิ่มคอลัมน์วันเกิดเข้าไปในตาราง

คำสั่ง ADD จะทำหน้าที่เพิ่มช่องใหม่เข้าไปต่อท้ายสุดของตารางเดิม ผลลัพธ์คือตาราง users ของเราจะมีคอลัมน์เพิ่มขึ้นมาหนึ่งช่องคือ birth_date ซึ่งจะว่างเปล่าในทุกแถวที่มีอยู่เดิมจนกว่าเราจะเข้าไปแก้ไขเพิ่มข้อมูล

การแก้ไขและลบคอลัมน์ที่ไม่ได้ใช้งาน

บางครั้งเราอาจต้องการเปลี่ยนชื่อคอลัมน์หรือเปลี่ยนประเภทข้อมูลให้เหมาะสมกว่าเดิม การใช้ ALTER TABLE ร่วมกับคำสั่งย่อยอย่าง CHANGE หรือ MODIFY จะช่วยให้เราปรับแต่งตารางได้ตามความต้องการของแอปพลิเคชันที่เปลี่ยนไปตามฟีเจอร์ใหม่ๆ

การลบคอลัมน์ทำได้โดยใช้คำสั่ง DROP COLUMN ซึ่งเหมาะสำหรับการจัดการข้อมูลที่ล้าสมัยหรือไม่มีการใช้งานแล้ว มือใหม่มักจะเก็บคอลัมน์ขยะไว้เยอะเกินไปจนทำให้ตารางอ่านยาก การรู้จักลบสิ่งที่ไม่ได้ใช้ออกจะช่วยให้ฐานข้อมูลของเราสะอาดและจัดการง่ายขึ้น

ลองดูตัวอย่างการเปลี่ยนชื่อคอลัมน์และลบคอลัมน์ที่ไม่ต้องการทิ้งกันครับ

ALTER TABLE users CHANGE name full_name VARCHAR(150); -- เปลี่ยนชื่อคอลัมน์จาก name เป็น full_name
ALTER TABLE users DROP COLUMN email; -- ลบคอลัมน์ email ออกจากตาราง

บรรทัดแรกเป็นการเปลี่ยนชื่อและขยายขนาดข้อมูลให้รองรับตัวอักษรได้มากขึ้น ส่วนบรรทัดที่สองคือการลบคอลัมน์ที่ไม่ได้ใช้งานออกไป ผลลัพธ์คือตาราง users จะเหลือเพียงคอลัมน์ id, full_name และ birth_date เท่านั้น

การล้างข้อมูลในตารางด้วย TRUNCATE

เมื่อเราทดสอบโปรแกรมเสร็จแล้วและต้องการเริ่มนับหนึ่งใหม่โดยการล้างข้อมูลทั้งหมดในตารางทิ้ง แต่ยังต้องการเก็บโครงสร้างตารางไว้เหมือนเดิม เราจะใช้คำสั่ง TRUNCATE TABLE ซึ่งจะล้างทุกแถวในตารางออกไปอย่างรวดเร็ว

อย่าสับสนระหว่าง TRUNCATE กับ DELETE นะครับ เพราะ TRUNCATE เป็นการล้างทั้งตารางและรีเซ็ตเลข AUTO_INCREMENT ให้กลับไปเริ่มที่ 1 ใหม่ ในขณะที่ DELETE จะลบทีละแถวและไม่รีเซ็ตเลขลำดับ ทำให้การล้างข้อมูลด้วย TRUNCATE เหมาะกับการเตรียมฐานข้อมูลให้สะอาดก่อนส่งงาน

ตัวอย่างการใช้งานนั้นง่ายมาก เพียงพิมพ์ชื่อตารางตามหลังคำสั่งนี้ครับ

TRUNCATE TABLE users; -- ล้างข้อมูลทั้งหมดในตาราง users

คำสั่งนี้จะจัดการลบข้อมูลทั้งหมดใน users ออกจนว่างเปล่า ผลลัพธ์คือเมื่อเราเพิ่มข้อมูลใหม่เข้าไปหลังจากนี้ ค่า id จะกลับมาเริ่มนับที่ 1 อีกครั้ง ทำให้ตารางกลับมาอยู่ในสถานะเหมือนตอนที่สร้างเสร็จใหม่ๆ

สรุป: การนำไปใช้จริงในการพัฒนาซอฟต์แวร์

การจัดการตารางด้วย SQL ไม่ใช่เรื่องยากหากเราหมั่นฝึกฝนและทำความเข้าใจลำดับขั้นตอน สมมติว่าวันนี้คุณกำลังทำระบบร้านค้าออนไลน์ ขั้นแรกคุณต้อง CREATE TABLE เพื่อสร้างตารางสินค้า หลังจากนั้นเมื่อลูกค้าต้องการให้เพิ่มฟีเจอร์ "สีของสินค้า" คุณก็แค่ใช้ ALTER TABLE เพื่อเพิ่มคอลัมน์ color เข้าไป

ในช่วงทดสอบระบบ คุณอาจจะใส่ข้อมูลตัวอย่างเข้าไปนับร้อยแถวเพื่อลองระบบค้นหา เมื่อถึงเวลาล้างข้อมูลเพื่อเตรียมเดโมให้ลูกค้าดู คุณก็ใช้ TRUNCATE เพื่อล้างข้อมูลเก่าทิ้งทั้งหมด การทำแบบนี้จะช่วยให้คุณทำงานได้เป็นมืออาชีพและลดความผิดพลาดในการจัดการฐานข้อมูลจริง

จำไว้ว่าฐานข้อมูลคือหัวใจของโปรแกรมทุกชนิด การออกแบบที่ดีตั้งแต่ต้นจะช่วยให้คุณประหยัดเวลาในการแก้ไขงานในอนาคตได้มหาศาล เริ่มฝึกจากการสร้างตารางเล็กๆ ในเครื่องตัวเอง แล้วลองแก้ไขโครงสร้างไปเรื่อยๆ จนคล่อง แล้วคุณจะพบว่าการจัดการฐานข้อมูลเป็นเรื่องที่สนุกและท้าทายมากครับ

แชร์บทความ

Facebook X LINE

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

MySQL/MariaDB

สอนวิธี Backup และ Restore ฐานข้อมูล MySQL/MariaDB ด้วย mysqldump บน Windows

มือใหม่หัดเขียนโปรแกรมต้องรู้! วิธีสำรองข้อมูล (Backup) และกู้คืน (Restore) ฐานข้อมูลด้วย mysqldump ผ่าน Command Line ป้องกันงานหาย ทำตามได้จริง

1 month ago 9 นาที
23 views
จัดการ User และสิทธิ์ใน MySQL/MariaDB ให้ปลอดภัยด้วยคำสั่ง GRANT และ REVOKE
MySQL/MariaDB

จัดการ User และสิทธิ์ใน MySQL/MariaDB ให้ปลอดภัยด้วยคำสั่ง GRANT และ REVOKE

มือใหม่หัดใช้ฐานข้อมูลต้องรู้! วิธีสร้าง User, กำหนดสิทธิ์ (Permission) และตั้งค่าความปลอดภัยให้ MySQL/MariaDB เพื่อป้องกันข้อมูลรั่วไหลแบบมือโปร

1 month ago 8 นาที
24 views
เข้าใจ MySQL และ MariaDB Trigger: เขียนคำสั่งอัตโนมัติให้ฐานข้อมูลทำงานแทนเรา
MySQL/MariaDB

เข้าใจ MySQL และ MariaDB Trigger: เขียนคำสั่งอัตโนมัติให้ฐานข้อมูลทำงานแทนเรา

อยากให้ฐานข้อมูลทำงานอัตโนมัติเมื่อมีการเพิ่มหรือลบข้อมูลไหม? มาเรียนรู้การใช้ Trigger (ตัวกระตุ้นการทำงาน) ใน MySQL และ MariaDB เพื่อลดภาระงานโค้ดกัน

1 month ago 8 นาที
23 views