Adicionando uma nova coluna SQL com um valor padrão


237

Eu estou procurando a sintaxe para adicionar uma coluna a um banco de dados MySQL com um valor padrão de 0

Referência

Respostas:


391

Tente o seguinte:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

Na documentação à qual você vinculou:

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

alter_specification:
    ...
    ADD [COLUMN] (col_name column_definition,...)
    ...

Para encontrar a sintaxe para column_definitionpesquisa um pouco mais abaixo na página:

As cláusulas column_definition usam a mesma sintaxe para ADD e CHANGE que para CREATE TABLE. Consulte a Seção 12.1.17, “Sintaxe CREATE TABLE”.

E a partir da página vinculada:

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]  

Observe a palavra PADRÃO lá.


4
Fiquei particularmente impressionado com o quão boa é essa resposta, concisa e completa, gostaria de poder revogá-la novamente #
Pseudonym

1
boolean e bool são sinônimos de TINYINT(1)que é muito mais eficiente do que usar INT, ter isso em mente quando se utiliza esta resposta "correta"
Clint Eastwood

1
Caso você precise adicionar uma coluna booleana com o valor padrão False, você pode usar: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1Man

"ALTER TABLE tabela1 ADICIONAR COLUNA foo INT DEFAULT 0;" - Nesta palavra-chave 'COLUMN' não é necessária
Adithya Sai 14/02

36

Como isso?

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

se o padrão for> 0, adicione aspas: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart

4

Basta adicionar default 0no final do seu ALTER TABLE <table> ADD COLUMN <column> <type>extrato


3

usuários da tabela (user_id int PK não assinado, nome de usuário varchar (32))

alter table users add column verified tinyint unsigned default 0

3

Isso funcionará para o tipo ENUM como valor padrão

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

2

Você pode tentar isso,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;

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

1
Você pode explicar isso mais? Por que você precisou adicionar uma nova resposta a esta pergunta?
Nico Haase

0

Se você estiver aprendendo, é útil usar uma GUI como SQLyog , faça as alterações usando o programa e consulte a guia Histórico das instruções DDL que fizeram essas alterações.


0

Tente isto :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

0

Outra palavra-chave útil é PRIMEIRO e DEPOIS, se você quiser adicioná-lo em um ponto específico da sua tabela.

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

DEPOIS bardeve ser * após INT
vladiastudillo 28/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.