SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Hinzufügen einer Spalte zu einer vorhandenen Tabelle in SQLite

In SQLite können Sie die ALTER TABLE verwenden Anweisung zum Hinzufügen einer Spalte zu einer vorhandenen Tabelle.

Dies ist tatsächlich eines der wenigen Dinge, die Sie mit ALTER TABLE tun können Anweisung in SQLite. Das Einzige, was Sie mit ALTER TABLE machen können Anweisung in SQLite ist eine Tabelle umbenennen, eine Spalte umbenennen und einer bestehenden Tabelle eine neue Spalte hinzufügen.

Beispiel 1

Stellen Sie sich vor, wir haben die folgende Tabelle:

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

Und wir wollen jetzt eine Spalte namens DOB hinzufügen . Wir könnten das mit dem folgenden Code tun:

ALTER TABLE Cats ADD COLUMN DOB;

So einfach ist das.

Einschränkungen

Sie können der Definition auch andere Spezifikationen wie Einschränkungen usw. hinzufügen, aber es gibt einige Einschränkungen.

Insbesondere:

  • Die neue Spalte darf keinen PRIMARY KEY haben oder UNIQUE Einschränkung.
  • Die neue Spalte darf keinen Standardwert von CURRENT_TIME haben , CURRENT_DATE , CURRENT_TIMESTAMP , oder ein Ausdruck in Klammern.
  • Wenn ein NOT NULL Einschränkung angegeben ist, muss die Spalte einen anderen Standardwert als NULL haben .
  • Wenn Foreign Key Constraints aktiviert sind und eine Spalte mit einem REFERENCES -Klausel hinzugefügt wird, muss die Spalte den Standardwert NULL haben .
  • Wenn die neue Spalte eine generierte Spalte ist, kann sie nicht STORED werden Säule. Es kann ein VIRTUAL sein Spalte.

Beispiel 2

Hier ist ein weiteres Beispiel, diesmal füge ich der Definition der neuen Spalte weitere Spezifikationen hinzu:

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

Und wir wollen jetzt eine Spalte namens DOB hinzufügen . Wir könnten das mit dem folgenden Code tun:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Überprüfen Sie die Änderungen

Es gibt mehrere Möglichkeiten, die Struktur einer Tabelle in SQLite zu überprüfen.

Eine Möglichkeit ist die Verwendung von PRAGMA table_info() Erklärung.

PRAGMA table_info(Dogs);

Ergebnis:

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

Wir können die neue Spalte sehen, und wir können sehen, dass sie einen NOT NULL hat Beschränkung und dass ihr Standardwert 0 ist .