添加具有默认值的新SQL列

Mat*_*iby 218 mysql sql

我正在寻找将列添加到MySQL数据库的语法,默认值为0

参考

Mar*_*ers 370

试试这个:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;
Run Code Online (Sandbox Code Playgroud)

从您链接到的文档:

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

alter_specification:
    ...
    ADD [COLUMN] (col_name column_definition,...)
    ...
Run Code Online (Sandbox Code Playgroud)

column_definition在页面下方找到搜索语法:

column_definition子句对ADD和CHANGE使用与CREATE TABLE相同的语法.请参见第12.1.17节"CREATE TABLE语法".

并从链接页面:

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]  
Run Code Online (Sandbox Code Playgroud)

注意那里的单词DEFAULT.

  • 我对这个答案的简洁性和彻底性感到非常满意,希望我能再次投票赞成 (3认同)
  • 考虑添加“NOT NULL”。除非指定,否则具有默认值的列仍然可以为 NULL,这通常(但并非总是)违背了默认值的目的。 (2认同)

Lek*_*eyn 35

像这样?

ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;
Run Code Online (Sandbox Code Playgroud)


san*_*mar 7

ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;
Run Code Online (Sandbox Code Playgroud)

  • 你能进一步解释一下吗?为什么您需要为此问题添加新答案? (3认同)

Jon*_*ack 6

表用户(user_id int unsigned PK,username varchar(32))

alter table users add column verified tinyint unsigned default 0
Run Code Online (Sandbox Code Playgroud)


Eto*_* B. 5

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