SQLite
 sql >> Base de données >  >> RDS >> SQLite

Ajouter une colonne à une table existante dans SQLite

Dans SQLite, vous pouvez utiliser le ALTER TABLE instruction pour ajouter une colonne à une table existante.

C'est en fait l'une des rares choses que vous pouvez faire avec ALTER TABLE déclaration dans SQLite. Les seules choses que vous pouvez faire avec ALTER TABLE L'instruction dans SQLite consiste à renommer une table, à renommer une colonne et à ajouter une nouvelle colonne à une table existante.

Exemple 1

Imaginons que nous ayons le tableau suivant :

CREATE TABLE Cats( 
    CatId INTEGER PRIMARY KEY, 
    CatName
);

Et nous voulons maintenant ajouter une colonne appelée DOB . Nous pourrions le faire en utilisant le code suivant :

ALTER TABLE Cats ADD COLUMN DOB;

C'est aussi simple que cela.

Restrictions

Vous pouvez également fournir d'autres spécifications à la définition, telles que des contraintes, etc., mais il existe certaines restrictions.

En particulier :

  • La nouvelle colonne ne peut pas avoir de PRIMARY KEY ou UNIQUE contrainte.
  • La nouvelle colonne ne peut pas avoir une valeur par défaut de CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , ou une expression entre parenthèses.
  • Si un NOT NULL contrainte est spécifiée, alors la colonne doit avoir une valeur par défaut autre que NULL .
  • Si les contraintes de clé étrangère sont activées et une colonne avec un REFERENCES clause est ajoutée, la colonne doit avoir une valeur par défaut de NULL .
  • Si la nouvelle colonne est une colonne générée, elle ne peut pas être STORED colonne. Il peut s'agir d'un VIRTUAL colonne cependant.

Exemple 2

Voici un autre exemple, cette fois j'ajoute quelques spécifications supplémentaires à la définition de la nouvelle colonne :

CREATE TABLE Dogs( 
    DogId INTEGER PRIMARY KEY, 
    DogName
);

Et nous voulons maintenant ajouter une colonne appelée DOB . Nous pourrions le faire en utilisant le code suivant :

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Vérifiez les modifications

Il existe plusieurs façons de vérifier la structure d'une table dans SQLite.

Une façon est d'utiliser le PRAGMA table_info() déclaration.

PRAGMA table_info(Dogs);

Résultat :

cid  name     type     notnull     dflt_value  pk
---  -------  -------  ----------  ----------  --
0    DogId    INTEGER  0                       1 
1    DogName           0                       0 
2    Score             1           0           0 

Nous pouvons voir la nouvelle colonne, et nous pouvons voir qu'elle a un NOT NULL contrainte, et que sa valeur par défaut est 0 .