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

ลบข้อจำกัด NOT NULL จากคอลัมน์ใน MySQL

การลบ NOT NULL Constraint ด้วย ALTER TABLE MODIFY

ใช้ ALTER TABLE ... MODIFY COLUMN เพื่อเปลี่ยนคอลัมน์จาก NOT NULL เป็น NULL ได้ (ลบข้อจำกัด)

ไวยากรณ์

ALTER TABLE yourTableName MODIFY COLUMN yourColumnName dataType;

หมายเหตุ: ไม่ต้องระบุ NOT NULL ในคำสั่ง MODIFY

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

สร้างตารางมี NOT NULL:

CREATE TABLE NotNullDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(20) NOT NULL,
    PRIMARY KEY(Id)
);

ลอง INSERT NULL (Error):

INSERT INTO NotNullDemo(Name) VALUES(NULL);
-- ERROR 1048 (23000): Column 'Name' cannot be null

ลบ NOT NULL constraint:

ALTER TABLE NotNullDemo MODIFY COLUMN Name VARCHAR(20);

ตอนนี้ INSERT NULL ได้แล้ว:

INSERT INTO NotNullDemo(Name) VALUES(NULL);
INSERT INTO NotNullDemo(Name) VALUES('Sam');
INSERT INTO NotNullDemo(Name) VALUES(NULL);

ผลลัพธ์:

+----+------+
| Id | Name |
+----+------+
| 1  | NULL |
| 2  | Sam  |
| 3  | NULL |
+----+------+

ตรวจสอบโครงสร้างตาราง

DESC NotNullDemo;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| Name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

คอลัมน์ Null = YES แปลว่ารองรับ NULL แล้ว

ข้อควรระวัง

  • ต้องระบุ Data Type ใหม่ทั้งหมด - MODIFY COLUMN ต้องการ definition เต็มรูปแบบ
  • ข้อมูลเดิมไม่หาย - เฉพาะ constraint ที่เปลี่ยน
  • Foreign Key - หากคอลัมน์เป็น FK อาจต้อง drop FK ก่อน
  • Index - Index ยังคงอยู่ (ยกเว้น Primary Key)

คำสั่งที่เกี่ยวข้อง

-- เพิ่ม NOT NULL กลับ (ต้องไม่มีข้อมูล NULL อยู่)
ALTER TABLE NotNullDemo MODIFY COLUMN Name VARCHAR(20) NOT NULL;

-- เปลี่ยน Data Type พร้อมกัน
ALTER TABLE NotNullDemo MODIFY COLUMN Name VARCHAR(50) NOT NULL;