Agregar una nueva columna SQL con un valor predeterminado


237

Estoy buscando la sintaxis para agregar una columna a una base de datos MySQL con un valor predeterminado de 0

Referencia

Respuestas:


391

Prueba esto:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

De la documentación que vinculó a:

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

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

Para encontrar la sintaxis para column_definitionbuscar un poco más abajo en la página:

Las cláusulas column_definition usan la misma sintaxis para ADD y CHANGE que para CREATE TABLE. Consulte la Sección 12.1.17, "Sintaxis CREAR TABLA".

Y desde la 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 la palabra PREDETERMINADA allí.


44
Me sorprendió especialmente lo buena que es esta respuesta, tanto concisa como minuciosa, ojalá pudiera volver a
votarla

1
boolean y bool son sinónimos para los TINYINT(1)que es mucho más eficiente que usar INT, tenga esto en cuenta al usar esta respuesta "correcta"
Clint Eastwood

1
En caso de que necesite agregar una columna booleana con un valor predeterminado de False, puede usar: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
hombre

"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" - En esta palabra clave 'COLUMNA' no se requiere
Adithya Sai

36

¿Me gusta esto?

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

si el valor predeterminado es> 0, agregue comillas: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart

4

Simplemente agregue default 0al final de su ALTER TABLE <table> ADD COLUMN <column> <type>estado de cuenta


3

usuarios de la tabla (user_id int unsigned PK, username varchar (32))

alter table users add column verified tinyint unsigned default 0

3

Esto funcionará para el tipo ENUM como valor predeterminado

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

2

Puedes probar esto,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;

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

1
¿Puedes explicar eso más? ¿Por qué necesitabas agregar una nueva respuesta a esta pregunta?
Nico Haase

0

Si está aprendiendo, es útil usar una GUI como SQLyog , realice los cambios utilizando el programa y luego vea la pestaña Historial para ver las declaraciones DDL que hicieron esos cambios.


0

Prueba esto :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

0

Otra palabra clave útil es PRIMERO y DESPUÉS si desea agregarla en un lugar específico de su tabla.

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

DESPUÉS bardebe ser * después de INT
vladiastudillo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.