SQLite
 sql >> база данни >  >> RDS >> SQLite

Добавете колона към съществуваща таблица в SQLite

В SQLite можете да използвате ALTER TABLE оператор за добавяне на колона към съществуваща таблица.

Това всъщност е едно от малкото неща, които можете да правите с ALTER TABLE изявление в SQLite. Единствените неща, които можете да правите с ALTER TABLE оператор в SQLite е преименуване на таблица, преименуване на колона и добавяне на нова колона към съществуваща таблица.

Пример 1

Представете си, че имаме следната таблица:

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

И сега искаме да добавим колона, наречена DOB . Можем да направим това с помощта на следния код:

ALTER TABLE Cats ADD COLUMN DOB;

Това е толкова просто.

Ограничения

Можете също да предоставите други спецификации към дефиницията, като ограничения и т.н., но има някои ограничения.

По-специално:

  • Новата колона не може да има PRIMARY KEY или UNIQUE ограничение.
  • Новата колона не може да има стойност по подразбиране CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , или израз в скоби.
  • Ако NOT NULL е посочено ограничение, тогава колоната трябва да има стойност по подразбиране, различна от NULL .
  • Ако ограниченията на външния ключ са разрешени и колона с REFERENCES се добавя клауза, колоната трябва да има стойност по подразбиране NULL .
  • Ако новата колона е генерирана колона, тя не може да бъде STORED колона. Може да бъде VIRTUAL колона обаче.

Пример 2

Ето още един пример, този път добавям още спецификации към дефиницията на новата колона:

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

И сега искаме да добавим колона, наречена DOB . Можем да направим това с помощта на следния код:

ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Проверете промените

Има няколко начина за проверка на структурата на таблица в SQLite.

Един от начините е да използвате PRAGMA table_info() изявление.

PRAGMA table_info(Dogs);

Резултат:

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

Можем да видим новата колона и можем да видим, че има NOT NULL ограничение и че стойността му по подразбиране е 0 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite агрегатни функции

  2. Как работи SQLite Avg().

  3. Вземете идентификатора на нов запис, вмъкнат в база данни от върнатия Uri

  4. Достъп до дейност и фонова услуга до база данни SQLite

  5. Android:onUpgrade не се обажда при надграждане на базата данни