sql >> Database >  >> RDS >> SQLite

Een kolom toevoegen aan een bestaande tabel in SQLite

In SQLite kun je de ALTER TABLE . gebruiken statement om een ​​kolom aan een bestaande tabel toe te voegen.

Dit is eigenlijk een van de weinige dingen die je kunt doen met de ALTER TABLE verklaring in SQLite. Het enige dat u kunt doen met de ALTER TABLE statement in SQLite is de naam van een tabel wijzigen, een kolom hernoemen en een nieuwe kolom toevoegen aan een bestaande tabel.

Voorbeeld 1

Stel je voor dat we de volgende tabel hebben:

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

En we willen nu een kolom toevoegen met de naam DOB . We zouden dat kunnen doen met de volgende code:

ALTER TABLE Cats ADD COLUMN DOB;

Zo simpel is het.

Beperkingen

U kunt ook andere specificaties aan de definitie geven, zoals beperkingen, enz., maar er zijn enkele beperkingen.

In het bijzonder:

  • De nieuwe kolom mag geen PRIMARY KEY . hebben of UNIQUE beperking.
  • De nieuwe kolom mag geen standaardwaarde hebben van CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , of een uitdrukking tussen haakjes.
  • Als een NOT NULL beperking is opgegeven, moet de kolom een ​​andere standaardwaarde hebben dan NULL .
  • Als beperkingen voor externe sleutels zijn ingeschakeld en een kolom met een REFERENCES clausule is toegevoegd, moet de kolom de standaardwaarde NULL . hebben .
  • Als de nieuwe kolom een ​​gegenereerde kolom is, kan deze niet worden STORED kolom. Het kan een VIRTUAL . zijn kolom wel.

Voorbeeld 2

Hier is nog een voorbeeld, deze keer voeg ik wat meer specificaties toe aan de definitie van de nieuwe kolom:

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

En we willen nu een kolom toevoegen met de naam DOB . We zouden dat kunnen doen met de volgende code:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Controleer de wijzigingen

Er zijn verschillende manieren om de structuur van een tabel in SQLite te controleren.

Een manier is om de PRAGMA table_info() . te gebruiken verklaring.

PRAGMA table_info(Dogs);

Resultaat:

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

We kunnen de nieuwe kolom zien en we kunnen zien dat deze een NOT NULL . heeft beperking, en dat de standaardwaarde 0 . is .


  1. Een gids voor het partitioneren van gegevens in PostgreSQL

  2. 6 functies om de dag, maand en jaar van een datum in SQL Server te krijgen

  3. Maak een tabel in MySQL

  4. Een MariaDB Galera-cluster runnen zonder orkestratietools - DB Container Management:deel twee