Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีลบ Unique Key ออกจากตาราง MySQL

การใช้ ALTER TABLE ... DROP INDEX

ใน MySQL Unique Key เป็นประเภทหนึ่งของ Index ดังนั้นการลบ Unique Key ใช้คำสั่ง DROP INDEX ภายใน ALTER TABLE

รูปแบบคำสั่ง

ALTER TABLE your_table_name DROP INDEX your_index_name;

ตัวอย่างการใช้งานจริง

1. สร้างตารางพร้อม Unique Key

CREATE TABLE DropIndexDemo (
    BookId INT UNIQUE KEY,
    BookName VARCHAR(200)
);

2. ตรวจสอบชื่อ Index (Key_name)

SHOW INDEX FROM DropIndexDemo;
TableNon_uniqueKey_nameColumn_name
dropindexdemo0BookIdBookId

👉 ชื่อ Index คือ BookId (ตั้งชื่ออัตโนมัติจากชื่อคอลัมน์)

3. ลบ Unique Key

ALTER TABLE DropIndexDemo DROP INDEX BookId;

4. ตรวจสอบโครงสร้างหลังลบ

DESC DropIndexDemo;
FieldTypeNullKeyDefault
BookIdint(11)YESNULL
BookNamevarchar(200)YESNULL

✅ คอลัมน์ BookId ไม่มี UNI ในคอลัมน์ Key แล้ว

กรณี Unique Key หลายคอลัมน์ (Composite Unique)

CREATE TABLE example (
    col1 INT,
    col2 INT,
    UNIQUE KEY uk_name (col1, col2)
);

-- ลบด้วยชื่อ Index ที่ตั้งเอง
ALTER TABLE example DROP INDEX uk_name;

คำสั่งทางเลือกอื่น

  • ALTER TABLE table_name DROP KEY index_name (ทำงานเหมือนกัน)
  • ใน MySQL 8.0+ ใช้ DROP CONSTRAINT ไม่ได้สำหรับ Unique Key (ใช้ได้เฉพาะ Foreign Key)

ข้อควรระวัง

  • 🔍 ตรวจสอบชื่อ Index จริงด้วย SHOW INDEX ก่อนลบ
  • 🗑️ การลบ Index อาจทำให้ Query ที่ใช้ Index นั้นช้าลง
  • 🔄 หากต้องการลบและสร้างใหม่ ให้ทำใน Transaction เดียวกัน (ถ้า Engine รองรับ)