sql >> Databáze >  >> RDS >> SQLite

Přidejte sloupec do existující tabulky v SQLite

V SQLite můžete použít ALTER TABLE příkaz k přidání sloupce do existující tabulky.

To je vlastně jedna z mála věcí, které můžete dělat s ALTER TABLE příkaz v SQLite. Jediné, co můžete dělat s ALTER TABLE příkazem v SQLite je přejmenovat tabulku, přejmenovat sloupec a přidat nový sloupec do existující tabulky.

Příklad 1

Představte si, že máme následující tabulku:

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

A nyní chceme přidat sloupec s názvem DOB . Mohli bychom to udělat pomocí následujícího kódu:

ALTER TABLE Cats ADD COLUMN DOB;

Je to tak jednoduché.

Omezení

Můžete také zadat další specifikace k definici, jako jsou omezení atd., ale existují určitá omezení.

Konkrétně:

  • Nový sloupec nemůže mít PRIMARY KEY nebo UNIQUE omezení.
  • Nový sloupec nemůže mít výchozí hodnotu CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , nebo výraz v závorkách.
  • Pokud NOT NULL omezení, pak musí mít sloupec výchozí hodnotu jinou než NULL .
  • Pokud jsou povolena omezení cizího klíče a sloupec s REFERENCES je přidána klauzule, sloupec musí mít výchozí hodnotu NULL .
  • Pokud je nový sloupec vygenerovaný, nelze jej STORED sloupec. Může to být VIRTUAL i když.

Příklad 2

Zde je další příklad, tentokrát k definici nového sloupce přidávám další specifikace:

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

A nyní chceme přidat sloupec s názvem DOB . Mohli bychom to udělat pomocí následujícího kódu:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Zkontrolujte změny

Existuje několik způsobů, jak zkontrolovat strukturu tabulky v SQLite.

Jedním ze způsobů je použití PRAGMA table_info() prohlášení.

PRAGMA table_info(Dogs);

Výsledek:

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

Vidíme nový sloupec a vidíme, že má NOT NULL omezení a že jeho výchozí hodnota je 0 .


  1. Dynamický pivot MySQL

  2. Budování databáze Microsoft Access

  3. Výkon Android Sqlite

  4. převést datový typ SET MySQL na Postgres