Aggiunta di una nuova colonna SQL con un valore predefinito


237

Sto cercando la sintassi per aggiungere una colonna a un database MySQL con un valore predefinito di 0

Riferimento

Risposte:


391

Prova questo:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

Dalla documentazione che hai collegato a:

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

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

Per trovare la sintassi per la column_definitionricerca un po 'più in basso nella pagina:

Le clausole column_definition utilizzano la stessa sintassi per ADD e CHANGE di CREATE TABLE. Vedere la Sezione 12.1.17, "CREAZIONE della sintassi della TABELLA".

E dalla pagina collegata:

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]  

Notare la parola DEFAULT lì.


4
Sono stato particolarmente colpito da quanto sia buona questa risposta, sia concisa che approfondita, vorrei poterla votare nuovamente
Pseudonimo

1
booleano e booleano sono sinonimi per i TINYINT(1)quali è molto più efficiente dell'uso INT, tenere presente che quando si utilizza questa risposta "corretta"
Clint Eastwood

1
Nel caso in cui sia necessario aggiungere una colonna booleana con un valore predefinito False, è possibile utilizzare: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
uomo,

"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" - In questa parola chiave "COLONNA" non è richiesta
Adithya Sai,

36

Come questo?

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

se il valore predefinito è> 0, aggiungi le virgolette: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart,

4

Aggiungi semplicemente default 0alla fine della tua ALTER TABLE <table> ADD COLUMN <column> <type>dichiarazione


3

utenti della tabella (user_id int unsigned PK, username varchar (32))

alter table users add column verified tinyint unsigned default 0

3

Questo funzionerà per il tipo ENUM come valore predefinito

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

2

Puoi provare questo,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;

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

1
Puoi spiegarlo ulteriormente? Perché hai dovuto aggiungere una nuova risposta a questa domanda?
Nico Haase,

0

Se stai imparando, è utile utilizzare una GUI come SQLyog , apportare le modifiche utilizzando il programma e quindi vedere la scheda Cronologia per le istruzioni DDL che hanno apportato tali modifiche.


0

Prova questo :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

0

Un'altra parola chiave utile è PRIMA e DOPO se si desidera aggiungerla in un punto specifico della tabella.

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

DOPO bardovrebbe essere * dopo INT
vladiastudillo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.