Додавання нового стовпця SQL зі значенням за замовчуванням


Відповіді:


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пошуку трохи далі на сторінці:

У колонці_визначення_використання використовується той самий синтаксис для ДОБАВЛЕННЯ та ЗМІНИ, що і для СТВОРИТИ ТАБЛИЦЮ. Див. Розділ 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
Мене особливо вразило, наскільки хороша ця відповідь, і лаконічна, і ретельна, хотіла б, щоб я могла її повторити
Псевдонім

1
boolean і bool - синоніми, для TINYINT(1)яких набагато ефективніше, ніж використання INT, майте це на увазі, використовуючи цю "правильну" відповідь
Клінт Іствуд

1
Якщо вам потрібно додати логічний стовпець зі значенням за замовчуванням False, ви можете використовувати: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1man

"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" - У цьому ключі "КОЛОН" не потрібно
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 0в кінці ALTER TABLE <table> ADD COLUMN <column> <type>заяви


3

користувачі таблиці (user_id int unsigned 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`;


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

1
Чи можете ви пояснити це далі? Чому вам потрібно було додати нову відповідь на це питання?
Ніко Хааз

0

Якщо ви навчаєтесь, корисно використовувати графічний інтерфейс типу SQLyog , внесіть зміни за допомогою програми, а потім перегляньте вкладку «Історія» для операторів DDL, які внесли ці зміни.



0

Ще одне корисне ключове слово - ПЕРШИЙ та ПІСЛЯ, якщо ви хочете додати його в певному місці таблиці.

ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;

ПІСЛЯ barмає бути * після INT
vladiastudillo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.