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 KEYellerUNIQUEbegrä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 NULLbegränsning anges, måste kolumnen ha ett annat standardvärde änNULL. - Om begränsningar för främmande nyckel är aktiverade och en kolumn med
REFERENCESsats läggs till, måste kolumnen ha standardvärdetNULL. - Om den nya kolumnen är en genererad kolumn kan den inte
STOREDkolumn. Det kan vara enVIRTUALkolumn 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 .