En SQLite, puede usar ALTER TABLE
instrucción para agregar una columna a una tabla existente.
Esta es en realidad una de las pocas cosas que puede hacer con ALTER TABLE
declaración en SQLite. Lo único que puedes hacer con ALTER TABLE
La declaración en SQLite es cambiar el nombre de una tabla, cambiar el nombre de una columna y agregar una nueva columna a una tabla existente.
Ejemplo 1
Imagina que tenemos la siguiente tabla:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
Y ahora queremos agregar una columna llamada DOB . Podríamos hacerlo usando el siguiente código:
ALTER TABLE Cats ADD COLUMN DOB;
Es tan simple como eso.
Restricciones
También puede proporcionar otras especificaciones a la definición, como restricciones, etc., pero existen algunas restricciones.
En particular:
- La nueva columna no puede tener una
PRIMARY KEY
oUNIQUE
restricción. - La nueva columna no puede tener un valor predeterminado de
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, o una expresión entre paréntesis. - Si un
NOT NULL
se especifica la restricción, entonces la columna debe tener un valor predeterminado que no seaNULL
. - Si las restricciones de clave externa están habilitadas y una columna con
REFERENCES
se agrega la cláusula, la columna debe tener un valor predeterminado deNULL
. - Si la nueva columna es una columna generada, no se puede
STORED
columna. Puede ser unVIRTUAL
aunque la columna.
Ejemplo 2
Aquí hay otro ejemplo, esta vez agrego algunas especificaciones más a la definición de la nueva columna:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
Y ahora queremos agregar una columna llamada DOB . Podríamos hacerlo usando el siguiente código:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Revise las Alteraciones
Hay varias formas de verificar la estructura de una tabla en SQLite.
Una forma es usar PRAGMA table_info()
declaración.
PRAGMA table_info(Dogs);
Resultado:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Podemos ver la nueva columna y podemos ver que tiene un NOT NULL
restricción, y que su valor predeterminado es 0 .