คำสั่ง SQL ALTER TABLE จะเพิ่ม เปลี่ยนแปลง หรือลบคอลัมน์ในตาราง คำสั่งนี้ช่วยให้คุณแก้ไขตารางหลังจากที่สร้างตารางแล้ว แม้ว่าตารางจะเก็บระเบียนก็ตาม
คุณอาจตัดสินใจว่าคุณจำเป็นต้องทำการเปลี่ยนแปลงในตาราง SQL ตัวอย่างเช่น คุณอาจต้องการเปลี่ยนชื่อคอลัมน์หรือเพิ่มคอลัมน์ใหม่ลงในตาราง การเปลี่ยนแปลงเหล่านี้เป็นไปได้ด้วยคำสั่ง SQL ALTER TABLE
SQL เปลี่ยนตาราง
คำสั่ง ALTER TABLE ช่วยให้คุณสามารถเปลี่ยนตารางที่มีอยู่ได้โดย:
- กำลังเพิ่มคอลัมน์
- การเพิ่มข้อจำกัด
- การลบคอลัมน์
- เปลี่ยนประเภทข้อมูล
- เปลี่ยนชื่อคอลัมน์
บทแนะนำนี้จะกล่าวถึงวิธีการแก้ไขตารางโดยใช้คำสั่ง SQL ALTER TABLE โดยอ้างอิงจากตัวอย่าง
การจัดโต๊ะอาหาร
สำหรับบทช่วยสอนนี้ เราจะแก้ไขตารางฐานข้อมูลสำหรับธุรกิจ ฐานข้อมูลนี้เก็บข้อมูลเกี่ยวกับพนักงานแต่ละคนที่ทำงานให้กับธุรกิจ ตารางของเราเรียกว่า “พนักงาน ” และมีค่าดังต่อไปนี้:
หลังจากสร้างตารางของเราแล้ว เราก็ตระหนักว่าเราต้องการเปลี่ยนแปลงโครงสร้างของตาราง เราสามารถทำได้โดยใช้คำสั่ง SQL ALTER TABLE
หากต้องการเรียนรู้วิธีสร้างตาราง โปรดดูคู่มือการสร้างตาราง SQL
SQL ALTER TABLE:เพิ่มคอลัมน์ลงในตาราง
คุณสามารถเพิ่มคอลัมน์ลงในตาราง SQL โดยใช้คำสั่ง ALTER TABLE ไวยากรณ์สำหรับการเพิ่มคอลัมน์ใหม่ลงในตารางที่มีอยู่มีดังนี้:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ALTER TABLE table_name ADD column_name data_type constraints;
สมมติว่าเราต้องการเพิ่มคอลัมน์ใหม่ลงในตาราง "พนักงาน" ซึ่งเก็บหมายเลขโทรศัพท์ของพนักงานทุกคน คอลัมน์นี้ควรเรียกว่า “phone_number” คอลัมน์ควรใช้ VARCHAR() ชนิดข้อมูล—ซึ่งช่วยให้เราจัดเก็บสตริงที่มีความยาวสูงสุด—และไม่มีข้อจำกัด
เราสามารถสร้างคอลัมน์นี้โดยใช้คำสั่งต่อไปนี้:
ALTER TABLE employees ADD phone_number VARCHAR(60);
คำสั่งนี้จะเพิ่มคอลัมน์ใหม่ลงในตารางของเราในฐานข้อมูล "พนักงาน" เมื่อเราดูโครงสร้างของฐานข้อมูล เรามีคอลัมน์ใหม่หนึ่งคอลัมน์ชื่อ “phone_number”:
ฟิลด์ | พิมพ์ | ค่าเริ่มต้น |
ชื่อ | varchar(60) | NULL |
หัวเรื่อง | varchar(60) | NULL |
แผนก | varchar(60) | NULL |
หมายเลขพนักงาน | varchar(60) | NULL |
หมายเลขโทรศัพท์ | varchar(60) | |
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิธีเพิ่มคอลัมน์ลงในฐานข้อมูลใน SQL โปรดดูคู่มือการเพิ่มคอลัมน์ SQL ของเรา
SQL ALTER TABLE:เพิ่มข้อจำกัดให้กับตาราง
ในส่วนที่แล้ว เราได้เพิ่มคอลัมน์ใหม่ลงในตารางของเรา:phone_number แต่เราลืมเพิ่มข้อจำกัดใดๆ ลงในตาราง
ในตัวอย่างนี้ หมายความว่าฐานข้อมูลของเราอาจจัดเก็บหมายเลขโทรศัพท์เดียวกันสำหรับพนักงานหลายคน ซึ่งไม่สามารถนำไปใช้ได้จริง
ในการแก้ไขปัญหานี้ เราสามารถเพิ่มข้อจำกัด UNIQUE ให้กับคอลัมน์ "phone_number" ในตารางของเรา ไวยากรณ์สำหรับการเพิ่มข้อจำกัดให้กับคอลัมน์ใน SQL มีดังต่อไปนี้:
ALTER TABLE table_name ADD UNIQUE (column_name);
คำสั่งนี้จะเพิ่มข้อจำกัดให้กับคอลัมน์ “phone_number” ของเรา:
ALTER TABLE employees ADD UNIQUE (phone_number);
หากเราต้องการเพิ่มข้อจำกัดอื่น เราสามารถทำได้โดยแทนที่ “UNIQUE” ด้วยข้อจำกัด SQL อื่น
SQL ALTER TABLE:ลบคอลัมน์ออกจากตาราง
คุณยังสามารถใช้คำสั่ง ALTER TABLE เพื่อลบคอลัมน์ออกจากตารางได้ ไวยากรณ์สำหรับการดำเนินการนี้มีดังต่อไปนี้:
ALTER TABLE table_name DROP COLUMN column_name;
สมมติว่าเราต้องการลบคอลัมน์ "แผนก" ออกจากตารางของเรา เราตั้งใจที่จะสร้างคอลัมน์ใหม่ในภายหลังซึ่งเชื่อมโยงแผนกของพนักงานกับตารางอื่น เราสามารถลบคอลัมน์นี้โดยใช้คำสั่งต่อไปนี้:
ALTER TABLE employees DROP COLUMN department;
เมื่อดำเนินการคำสั่งนี้ คอลัมน์ "แผนก" จากตารางของเราจะหายไป ดังนั้น โครงสร้างสำหรับตารางของเราตอนนี้จึงปรากฏดังนี้:
ฟิลด์ | พิมพ์ | ค่าเริ่มต้น |
ชื่อ | varchar(60) | NULL |
หัวเรื่อง | varchar(60) | NULL |
หมายเลขพนักงาน | varchar(60) | NULL |
หมายเลขโทรศัพท์ | varchar(60) | |
SQL ALTER TABLE:เปลี่ยนประเภทข้อมูลของคอลัมน์
คุณสามารถใช้คำสั่ง ALTER TABLE เพื่อเปลี่ยนชนิดข้อมูลของคอลัมน์ ไวยากรณ์สำหรับการเปลี่ยนชนิดข้อมูลของคอลัมน์คือ:
ALTER TABLE table_name ALTER COLUMN column_name new_data_type;
คำสั่งนี้มีทางเลือกสองเวอร์ชันสำหรับ MySQL และ Oracle (ก่อน 10G) และสำหรับ Oracle 10G และใหม่กว่า เหล่านี้คือ:
ALTER TABLE table_name MODIFY COLUMN column_name new_data_type; (MySQL, Oracle pre-10G) ALTER TABLE table_name MODIFY column_name new_data_type; (Oracle 10G+ and later)
เมื่อเราสร้างตาราง "พนักงาน" เริ่มต้น เราทำผิดพลาดในการกำหนดฟิลด์ "employee_number" ให้เป็น VARCHAR() แทนที่จะเป็นตัวเลข เพื่อแก้ไขข้อผิดพลาดนี้ เราสามารถใช้คำสั่งต่อไปนี้:
ALTER TABLE employees ALTER COLUMN employee_number INT;
คำสั่งนี้จะเปลี่ยนประเภทของคอลัมน์ "employee_number" ของเราเป็น INT ดังนั้น โครงสร้างใหม่สำหรับฐานข้อมูลของเรามีดังนี้:
ฟิลด์ | พิมพ์ | ค่าเริ่มต้น |
ชื่อ | varchar(60) | NULL |
หัวเรื่อง | varchar(60) | NULL |
หมายเลขพนักงาน | varchar(60) | NULL |
หมายเลขโทรศัพท์ | int | |
SQL ALTER TABLE:เปลี่ยนชื่อตาราง
คำสั่ง ALTER TABLE ยังให้คุณเปลี่ยนชื่อตาราง SQL ได้อีกด้วย ไวยากรณ์สำหรับการเปลี่ยนชื่อตารางคือ:
ALTER TABLE current_table RENAME new_table;
สมมติว่าเราต้องการเปลี่ยนชื่อตาราง "พนักงาน" เป็น "old_employees_2019" เราสามารถทำได้โดยใช้คำสั่งนี้:
ALTER TABLE employees RENAME old_employees_2019;
คุณไม่สามารถเปลี่ยนชื่อตารางโดยใช้คำสั่ง ALTER TABLE ใน MySQL ใน MySQL แทนที่จะใช้ ALTER TABLE คุณสามารถใช้คำสั่ง RENAME table ได้
เราจะใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนชื่อตารางของเราใน MySQL:
RENAME TABLE employees TO old_employees_2019;
บทสรุป
คำสั่ง SQL ALTER TABLE ช่วยให้คุณสามารถเปลี่ยนโครงสร้างของตารางใน SQL คุณสามารถเพิ่มตาราง เอาตารางออกจาก หรือเปลี่ยนตารางในฐานข้อมูลได้ นอกจากนี้ คุณสามารถแก้ไขข้อจำกัดที่เกี่ยวข้องกับตาราง เช่น UNIQUE หรือ NOT NULL
คุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ SQL หรือไม่? อ่านคู่มือวิธีการเรียนรู้ SQL ของเรา คุณจะพบเคล็ดลับสำคัญเกี่ยวกับวิธีการเรียนรู้ SQL นอกจากนี้ คุณยังจะได้พบกับรายการแหล่งข้อมูลการเรียนรู้ที่คัดสรรโดยผู้เชี่ยวชาญเพื่อช่วยคุณสร้างความรู้