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

Tilføj en kolonne til en eksisterende tabel i SQLite

I SQLite kan du bruge ALTER TABLE sætning for at tilføje en kolonne til en eksisterende tabel.

Dette er faktisk en af ​​de få ting, du kan gøre med ALTER TABLE sætning i SQLite. De eneste ting du kan gøre med ALTER TABLE sætning i SQLite er at omdøbe en tabel, omdøbe en kolonne og tilføje en ny kolonne til en eksisterende tabel.

Eksempel 1

Forestil dig, at vi har følgende tabel:

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

Og vi vil nu tilføje en kolonne kaldet DOB . Vi kunne gøre det ved at bruge følgende kode:

ALTER TABLE Cats ADD COLUMN DOB;

Så enkelt er det.

Begrænsninger

Du kan også angive andre specifikationer til definitionen, såsom begrænsninger osv., men der er nogle begrænsninger.

Især:

  • Den nye kolonne kan ikke have en PRIMARY KEY eller UNIQUE begrænsning.
  • Den nye kolonne kan ikke have en standardværdi på CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , eller et udtryk i parentes.
  • Hvis en NOT NULL begrænsning er angivet, så skal kolonnen have en anden standardværdi end NULL .
  • Hvis fremmednøglebegrænsninger er aktiveret og en kolonne med en REFERENCES klausul tilføjes, skal kolonnen have en standardværdi på NULL .
  • Hvis den nye kolonne er en genereret kolonne, kan den ikke STORED kolonne. Det kan være en VIRTUAL kolonne dog.

Eksempel 2

Her er et andet eksempel, denne gang tilføjer jeg nogle flere specifikationer til definitionen af ​​den nye kolonne:

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

Og vi vil nu tilføje en kolonne kaldet DOB . Vi kunne gøre det ved at bruge følgende kode:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Tjek ændringerne

Der er flere måder at kontrollere strukturen af ​​en tabel i SQLite.

En måde er at bruge PRAGMA table_info() erklæring.

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 nye kolonne, og vi kan se, at den har en NOT NULL begrænsning, og at dens standardværdi er 0 .


  1. Mest effektive måde i SQL Server at få dato fra dato+tid?

  2. Er kolonne- og tabelnavne følsomme for store og små bogstaver i MySQL?

  3. Postgresql-tabeller eksisterer, men hentning af relation eksisterer ikke, når der forespørges

  4. Returner alle fremmednøgler &CHECK-begrænsninger i en SQL Server-database (T-SQL-eksempler)