添加具有默认值的新SQL列


Answers:


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
这个答案的简洁性和彻底性让我特别震惊,希望我能再次投票赞成它
假名2015年

1
布尔值和布尔值是同义词,TINYINT(1)比使用boolean和bool 更有效INT,请在使用此“正确”答案时记住这一点
Clint Eastwood

1
如果需要添加一个默认值为False的布尔值列,则可以使用:ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1man

“ ALTER TABLE table1添加列foo INT默认值0;” -不需要此“ COLUMN”关键字
Adithya Sai

36

像这样?

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

如果默认值为> 0,请添加引号:ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT'1';
西里尔·提花

4

只需default 0ALTER TABLE <table> ADD COLUMN <column> <type>声明的末尾添加


3

表用户(user_id int无符号PK,用户名varchar(32))

alter table users add column verified tinyint unsigned default 0

3

这将适用于ENUM类型作为默认值

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



0

如果您正在学习使用像SQLyog这样的GUI很有帮助,请使用该程序进行更改,然后查看“历史记录”选项卡以获取进行这些更改的DDL语句。


0

试试这个 :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.