I am looking for the syntax to add a column to a MySQL database with a default value of 0
10 Answers
Try this:
ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;
From the documentation that you linked to:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
...
ADD [COLUMN] (col_name column_definition,...)
...
To find the syntax for column_definition search a bit further down the page:
column_definition clauses use the same syntax for ADD and CHANGE as for CREATE TABLE. See Section 12.1.17, “CREATE TABLE Syntax”.
And from the linked page:
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]
Notice the word DEFAULT there.
5 Comments
TINYINT(1) which is way more efficient than using INT, bear that in mind when using this "correct" answerNOT NULL. Unless specified, a column with a default value can still be NULL, which often (but not always) defeats the purpose of the default value.Like this?
ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;
1 Comment
tablename ADD new_col_name INT NOT NULL DEFAULT '1';ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;
1 Comment
Another useful keyword is FIRST and AFTER if you want to add it in a specific spot in your table.
ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;
1 Comment
bar should be *after INTIf you are learning it's helpful to use a GUI like SQLyog, make the changes using the program and then see the History tab for the DDL statements that made those changes.