2010-08-25 41 views

回答

282

嘗試這種情況:

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子句使用相同的語法添加和更改爲創建表。見Section 12.1.17, 「CREATE TABLE Syntax」.

並從鏈接頁面:

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那裏。

+1

我對這個問題的答案有多特別感到驚訝,既簡潔又徹底,希望我可以再次使用它 – Pseudonym 2015-12-15 14:30:58

+1

boolean和bool是'TINYINT(1)'的同義詞,比'INT'更有效率,熊在使用此「正確」答案時記住這一點 – 2016-04-13 19:21:15

+1

如果需要添加默認值爲False的布爾列,可以使用:ALTER TABLE table1 ADD COLUMN foo boolean not null default 0; – 1man 2016-05-02 16:54:30

2

表用戶的默認值(user_ID的INT無符號PK,用戶名VARCHAR(32))

alter table users add column verified tinyint unsigned default 0 
28

是否這樣?

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

如果默認值> 0,加引號:ALTER TABLE'tablename' ADD'new_col_name' INT NOT NULL DEFAULT'1'; – 2016-05-30 12:28:44

3

只需在您的ALTER TABLE <table> ADD COLUMN <column> <type>聲明

0

的末尾添加default 0如果你正在學習是有幫助的使用GUI像SQLyog,使用程序進行更改,然後查看歷史記錄選項卡的DDL語句那些改變。

2

你可以試試這個,

ALTER TABLE table_name ADD column_name INT DEFAULT 0; 
0

試試這個:)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0; 
0

這將爲ENUM類型的工作爲默認值

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

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