2010-08-25 52 views

Respuesta

282

Prueba esto:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0; 

De la documentación que se ha vinculado 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_definition buscar un poco más abajo en la página:

cláusulas column_definition utilizan la misma sintaxis para ADD y CHANGE que CREAR MESA. Ver Section 12.1.17, “CREATE TABLE Syntax”.

Y a partir de la página enlazada:

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] 

Aviso la palabra DEFAULT allí.

+1

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

+1

boolean y bool son sinónimos de 'TINYINT (1)' que es mucho más eficiente que usar 'INT', bear eso en mente al usar esta respuesta "correcta" –

+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; – 1man

2

tabla de usuarios (user id int PK sin firma, nombre de usuario varchar (32))

alter table users add column verified tinyint unsigned default 0 
28

Como esta?

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

si el valor predeterminado es> 0, agregue comillas: ALTER TABLE 'tablename' ADD' new_col_name' INT NOT NULL DEFAULT '1'; –

3

Basta con añadir default 0 al final de su ALTER TABLE <table> ADD COLUMN <column> <type> comunicado

0

Si usted está aprendiendo que es útil usar una interfaz gráfica de usuario como SQLyog, realice los cambios utilizando el programa y luego ver la ficha Historial de las sentencias DDL que hizo esos cambios

2

Puede probar esto,

ALTER TABLE table_name ADD column_name INT DEFAULT 0; 
0

Pruebe esto :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0; 
0

Esto funcionará para el tipo ENUM como valor por defecto

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

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

Cuestiones relacionadas