SQLite
 sql >> Database >  >> RDS >> SQLite

Aggiungi una colonna a una tabella esistente in SQLite

In SQLite, puoi usare ALTER TABLE istruzione per aggiungere una colonna a una tabella esistente.

Questa è in realtà una delle poche cose che puoi fare con ALTER TABLE istruzione in SQLite. Le uniche cose che puoi fare con ALTER TABLE L'istruzione in SQLite è rinominare una tabella, rinominare una colonna e aggiungere una nuova colonna a una tabella esistente.

Esempio 1

Immagina di avere la seguente tabella:

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

E ora vogliamo aggiungere una colonna chiamata DOB . Potremmo farlo usando il seguente codice:

ALTER TABLE Cats ADD COLUMN DOB;

È così semplice.

Restrizioni

Puoi anche fornire altre specifiche alla definizione, come vincoli, ecc., ma ci sono alcune restrizioni.

In particolare:

  • La nuova colonna non può avere una PRIMARY KEY o UNIQUE vincolo.
  • La nuova colonna non può avere un valore predefinito di CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , o un'espressione tra parentesi.
  • Se un NOT NULL viene specificato il vincolo, la colonna deve avere un valore predefinito diverso da NULL .
  • Se i vincoli di chiave esterna sono abilitati e una colonna con un REFERENCES viene aggiunta la clausola, la colonna deve avere un valore predefinito di NULL .
  • Se la nuova colonna è una colonna generata, non può essere STORED colonna. Può essere un VIRTUAL colonna però.

Esempio 2

Ecco un altro esempio, questa volta aggiungo qualche specifica in più alla definizione della nuova colonna:

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

E ora vogliamo aggiungere una colonna chiamata DOB . Potremmo farlo usando il seguente codice:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Controlla le modifiche

Esistono diversi modi per controllare la struttura di una tabella in SQLite.

Un modo è usare PRAGMA table_info() dichiarazione.

PRAGMA table_info(Dogs);

Risultato:

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

Possiamo vedere la nuova colonna e possiamo vedere che ha un NOT NULL vincolo e che il suo valore predefinito è 0 .