การเพิ่มคอลัมน์ SQL ใหม่ด้วยค่าเริ่มต้น


คำตอบ:


391

ลองสิ่งนี้:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

จากเอกสารที่คุณเชื่อมโยงกับ:

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
   alter_specification [, alter_specification] ...

alter_specification:
    ...
    ADD [COLUMN] (col_name column_definition,...)
    ...

หากต้องการค้นหาไวยากรณ์เพื่อcolumn_definitionค้นหาอีกเล็กน้อยในหน้า:

ส่วนคำสั่ง column_definition ใช้ไวยากรณ์เดียวกันสำหรับ ADD และ CHANGE เช่นเดียวกับ CREATE TABLE ดูส่วนที่ 12.1.17“ สร้างตารางไวยากรณ์”

และจากหน้าเชื่อมโยง:

column_definition:  
   data_type [NOT NULL | NULL] [DEFAULT default_value]
   [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]  
   [COMMENT 'string']  
   [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]  
   [STORAGE {DISK|MEMORY|DEFAULT}]  
   [reference_definition]  

สังเกตคำว่า DEFAULT ที่นั่น


4
ผมหลงโดยเฉพาะอย่างยิ่งวิธีการที่ดีคำตอบนี้เป็นทั้งกระชับและทั่วถึงหวังว่าฉันจะ upvote มันอีกครั้ง
นามแฝง

1
บูลและบูลเป็นคำพ้องความหมายสำหรับTINYINT(1)ซึ่งเป็นวิธีที่มีประสิทธิภาพมากขึ้นกว่าการใช้INTหมีที่ในใจเมื่อใช้นี้ "ถูกต้อง" คำตอบ
คลินต์อีสต์วู้ด

1
ในกรณีที่คุณต้องการเพิ่มคอลัมน์บูลีนที่มีค่าเริ่มต้นเป็นเท็จคุณสามารถใช้: แก้ไขตาราง table1 เพิ่มคอลัมน์ foo บูลีนไม่ใช่ค่าเริ่มต้น 0;
1man

"แก้ไขตาราง table1 เพิ่มคอลัมน์ foo INT ค่าเริ่มต้น 0;" - ไม่จำเป็นต้องใช้คำหลัก 'COLUMN'
Adithya Sai

36

แบบนี้?

ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;

หากค่าเริ่มต้นคือ> 0 ให้เพิ่มเครื่องหมายคำพูด: แก้ไขตารางtablenameเพิ่มnew_col_nameINT ไม่เป็นค่าเริ่มต้น '1'
Cyril Jacquart



3

สิ่งนี้จะทำงานสำหรับประเภท ENUM เป็นค่าเริ่มต้น

ALTER TABLE engagete_st.holidays add column `STATUS` ENUM('A', 'D') default 'A' AFTER `H_TYPE`;


1
ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;

1
คุณช่วยอธิบายเพิ่มเติมได้ไหม ทำไมคุณต้องเพิ่มคำตอบใหม่สำหรับคำถามนี้
Nico Haase

0

หากคุณกำลังเรียนรู้ว่าการใช้ GUI เช่นSQLyogเป็นประโยชน์ให้ทำการเปลี่ยนแปลงโดยใช้โปรแกรมแล้วดูแท็บประวัติสำหรับคำสั่ง DDL ที่ทำการเปลี่ยนแปลงเหล่านั้น



0

คำหลักที่มีประโยชน์อีกคำหนึ่งคือ FIRST และ AFTER ถ้าคุณต้องการเพิ่มในจุดเฉพาะในตารางของคุณ

ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;

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