Ajout d'une nouvelle colonne SQL avec une valeur par défaut

237

Je recherche la syntaxe pour ajouter une colonne à une base de données MySQL avec une valeur par défaut de 0

Référence

Matt Elhotiby
la source

Réponses:

391

Essaye ça:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

À partir de la documentation que vous avez liée à:

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

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

Pour trouver la syntaxe de column_definitionrecherche un peu plus bas dans la page:

Les clauses column_definition utilisent la même syntaxe pour ADD et CHANGE que pour CREATE TABLE. Voir Section 12.1.17, «Syntaxe CREATE TABLE».

Et à partir de la page liée:

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]  

Remarquez le mot DEFAULT ici.

Mark Byers
la source
4
J'ai été particulièrement frappé par la qualité de cette réponse, à la fois concise et approfondie, j'aimerais pouvoir la voter à nouveau
Pseudonyme
1
booléen et booléen sont des synonymes TINYINT(1)qui sont beaucoup plus efficaces que l'utilisation INT, gardez cela à l'esprit lorsque vous utilisez cette «bonne» réponse
Clint Eastwood
1
Si vous devez ajouter une colonne booléenne avec une valeur par défaut False, vous pouvez utiliser: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1man
"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" - Dans ce mot clé 'COLUMN' n'est pas requis
Adithya Sai
36

Comme ça?

ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;
Lekensteyn
la source
si la valeur par défaut est> 0, ajoutez des guillemets: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart
4

Ajoutez simplement default 0à la fin de votre ALTER TABLE <table> ADD COLUMN <column> <type>relevé

Eton B.
la source
3

utilisateurs de table (user_id int unsigned PK, username varchar (32))

alter table users add column verified tinyint unsigned default 0
Jon Black
la source
3

Cela fonctionnera pour le type ENUM comme valeur par défaut

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

Vous pouvez essayer ça,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;
itzmebibin
la source
1
ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;
sandeep kumar
la source
1
Pouvez-vous expliquer cela davantage? Pourquoi avez-vous dû ajouter une nouvelle réponse à cette question?
Nico Haase
0

Si vous apprenez qu'il est utile d'utiliser une interface graphique comme SQLyog , apportez les modifications à l'aide du programme, puis consultez l'onglet Historique pour les instructions DDL qui ont apporté ces modifications.

Max Toro
la source
0

Essaye ça :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;
MAnoj Sarnaik
la source
0

Un autre mot clé utile est FIRST et AFTER si vous souhaitez l'ajouter à un endroit spécifique de votre tableau.

ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;
Roman Rabinovich
la source
APRÈS bardevrait être * après INT
vladiastudillo