จะเปลี่ยนนิยามคอลัมน์ MySQL ได้อย่างไร


156

ฉันมีตาราง mySQL ที่เรียกว่าการทดสอบ:

create table test(
    locationExpect varchar(120) NOT NULL;
);

ฉันต้องการเปลี่ยนคอลัมน์ locationExpect เป็น:

create table test(
    locationExpect varchar(120);
);

มันสามารถทำได้อย่างรวดเร็ว?

คำตอบ:


273

คุณหมายถึงการเปลี่ยนแปลงตารางหลังจากที่มันถูกสร้างขึ้น? ถ้าเป็นเช่นนั้นคุณต้องใช้ตารางแก้ไขโดยเฉพาะ:

ALTER TABLE tablename MODIFY COLUMN new-column-definition

เช่น

ALTER TABLE test MODIFY COLUMN locationExpect VARCHAR(120);

5
ดังนั้น ... MySQLWorkbench มีข้อผิดพลาดในการตรวจสอบไวยากรณ์ที่ปฏิเสธคำสั่งนี้ แต่มันเป็นคำสั่งที่ถูกต้อง
Steven Lu

ระวัง: ตัวอย่างข้างต้นจะเปลี่ยน COLUMN เป็น Null = ใช่, ค่าเริ่มต้น = Null คุณต้องระบุค่าที่แตกต่างหากคุณไม่ต้องการ Null
Guy Gordon

@GuyGordon ในคำถามเดิมMaskต้องการเปลี่ยนคอลัมน์จากNOT NULLเป็นอนุญาต null ดังนั้นฉันคิดว่าตัวอย่างนี้ยังคงตกลง ยอมรับว่าจะมีการเปลี่ยนแปลงเล็กน้อยหากต้องการค่าเริ่มต้นที่แตกต่างกัน
mikej

43

ไวยากรณ์เพื่อเปลี่ยนชื่อคอลัมน์ในMySql :

alter table table_name change old_column_name new_column_name data_type(size);

ตัวอย่าง:

alter table test change LowSal Low_Sal integer(4);

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.