sql >> Databasteknik >  >> RDS >> SQLite

Lägg till en kolumn till en befintlig tabell i SQLite

I SQLite kan du använda ALTER TABLE för att lägga till en kolumn i en befintlig tabell.

Detta är faktiskt en av de få saker du kan göra med ALTER TABLE uttalande i SQLite. Det enda du kan göra med ALTER TABLE sats i SQLite är att byta namn på en tabell, byta namn på en kolumn och lägga till en ny kolumn till en befintlig tabell.

Exempel 1

Föreställ dig att vi har följande tabell:

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

Och vi vill nu lägga till en kolumn som heter DOB . Vi skulle kunna göra det med följande kod:

ALTER TABLE Cats ADD COLUMN DOB;

Så enkelt är det.

Begränsningar

Du kan också ange andra specifikationer till definitionen, såsom begränsningar, etc, men det finns vissa begränsningar.

I synnerhet:

  • Den nya kolumnen kan inte ha en PRIMARY KEY eller UNIQUE begränsning.
  • Den nya kolumnen kan inte ha ett standardvärde på CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , eller ett uttryck inom parentes.
  • Om en NOT NULL begränsning anges, måste kolumnen ha ett annat standardvärde än NULL .
  • Om begränsningar för främmande nyckel är aktiverade och en kolumn med REFERENCES sats läggs till, måste kolumnen ha standardvärdet NULL .
  • Om den nya kolumnen är en genererad kolumn kan den inte STORED kolumn. Det kan vara en VIRTUAL kolumn dock.

Exempel 2

Här är ett annat exempel, den här gången lägger jag till några fler specifikationer till definitionen av den nya kolumnen:

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

Och vi vill nu lägga till en kolumn som heter DOB . Vi skulle kunna göra det med följande kod:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Kontrollera ändringarna

Det finns flera sätt att kontrollera strukturen för en tabell i SQLite.

Ett sätt är att använda PRAGMA table_info() uttalande.

PRAGMA table_info(Dogs);

Resultat:

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

Vi kan se den nya kolumnen, och vi kan se att den har en NOT NULL begränsning och att dess standardvärde är 0 .


  1. Förståelse av redo logggrupp vs fil vs medlem

  2. Hur WEEKOFYEAR() fungerar i MariaDB

  3. ställ in sqlite db korrekt i Android

  4. Migrera din Access-databas till SQL Server