หากตารางมีอยู่แล้วและต้องการกำหนด Primary Key ให้คอลัมน์ที่มีอยู่ ให้ใช้คำสั่ง ALTER TABLE ... ADD PRIMARY KEY
รูปแบบคำสั่ง
ALTER TABLE yourTableName ADD PRIMARY KEY(yourColumnName);
ตัวอย่างขั้นตอน
1. สร้างตารางโดยไม่มี Primary Key
mysql> CREATE TABLE AddingPrimaryKeyDemo (
-> UniversityId INT,
-> UniversityName VARCHAR(200)
-> );
Query OK, 0 rows affected (1.16 sec)
2. ตรวจสอบโครงสร้างตาราง (ก่อนเพิ่ม PK)
mysql> DESC AddingPrimaryKeyDemo;
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| UniversityId | int(11) | YES | | NULL | |
| UniversityName | varchar(200) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
2 rows in set (0.09 sec)
สังเกตคอลัมน์ Key ว่าง และ Null เป็น YES
3. เพิ่ม Primary Key
mysql> ALTER TABLE AddingPrimaryKeyDemo ADD PRIMARY KEY(UniversityId);
Query OK, 0 rows affected (1.48 sec)
4. ตรวจสอบอีกครั้ง (หลังเพิ่ม PK)
mysql> DESC AddingPrimaryKeyDemo;
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| UniversityId | int(11) | NO | PRI | NULL | |
| UniversityName | varchar(200) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
2 rows in set (0.04 sec)
ตอนนี้คอลัมน์ Key แสดง PRI และ Null กลายเป็น NO แสดงว่า Primary Key ทำงานแล้ว
ข้อจำกัดสำคัญ
- คอลัมน์ต้องไม่มีค่า
NULLอยู่แล้ว - ค่าต้องไม่ซ้ำกัน (Unique)
- หากมีข้อมูลซ้ำหรือ NULL จะเกิด Error และไม่สามารถเพิ่ม PK ได้
เคล็ดลับ: ตรวจสอบข้อมูลก่อนด้วย SELECT UniversityId, COUNT(*) FROM AddingPrimaryKeyDemo GROUP BY UniversityId HAVING COUNT(*) > 1;