Добавление нового столбца SQL со значением по умолчанию

237

Я ищу синтаксис для добавления столбца в базу данных MySQL со значением по умолчанию 0

Ссылка

Мэтт Элхотиби
источник

Ответы:

392

Попробуй это:

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, «Синтаксис 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]  

Обратите внимание на слово DEFAULT там.

Марк Байерс
источник
4
Меня особенно поразил, насколько хорош этот ответ, как краткий, так и исчерпывающий, если бы я мог снова его проголосовать
псевдоним
1
boolean и bool - синонимы, для TINYINT(1)которых это намного эффективнее, чем использование INT, имейте это в виду при использовании этого «правильного» ответа
Клинт Иствуд,
1
Если вам нужно добавить логический столбец со значением по умолчанию False, вы можете использовать: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1
"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" - В этом ключевом слове «КОЛОННА» не требуется
Адития Саи,
36

Как это?

ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;
Lekensteyn
источник
если по умолчанию> 0, добавить кавычки: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Кирилл Жаккарт
4

Просто добавьте default 0в конце вашего ALTER TABLE <table> ADD COLUMN <column> <type>заявления

Итон Б.
источник
3

пользователи таблицы (user_id int без знака ПК, имя пользователя 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`;
vpgodara
источник
2

Вы можете попробовать это,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;
itzmebibin
источник
1
ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;
Сандип Кумар
источник
1
Можете ли вы объяснить это дальше? Зачем вам нужно было добавить новый ответ на этот вопрос?
Нико Хааз
0

Если вы изучаете, полезно использовать графический интерфейс, такой как SQLyog , внести изменения с помощью программы, а затем увидеть вкладку «Журнал» для операторов DDL, которые внесли эти изменения.

Макс Торо
источник
0

Попробуй это :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;
МАной Сарнаик
источник
0

Другое полезное ключевое слово - ПЕРВЫЙ и ПОСЛЕ, если вы хотите добавить его в определенное место в вашей таблице.

ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;
Роман Рабинович
источник
ПОСЛЕ barдолжно быть * после INT
vladiastudillo