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

SQLite - Промяна на таблица

SQLite поддържа ограничено подмножество от стандарта на SQL ALTER TABLE изявление.

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

Добавяне на колона

ADD COLUMN синтаксисът се използва за добавяне на нова колона към съществуваща таблица.

Нека добавим колона към Изпълнители таблица:

ALTER TABLE Artists
ADD COLUMN Bio TEXT;

След това проверете таблицата с .schema команда:

sqlite> .schema Artists
CREATE TABLE Artists(
  ArtistId    INTEGER PRIMARY KEY, 
  ArtistName  TEXT NOT NULL
, Bio TEXT);

Следните ограничения важат при използване на ADD COLUMN синтаксис в SQLite:

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

Преименувайте таблица

RENAME TO синтаксисът ви позволява да промените името на таблица.

Нека преименуваме една от нашите таблици:

ALTER TABLE Albums
RENAME TO Albums1;

И го проверете с .tables команда:

sqlite> .tables
Albums1  Artists

Сега всички по-нататъшни операции ще трябва да използват новото име на таблицата. Така че можем да изберем данни като това:

SELECT AlbumName, Year 
FROM Artists AS a INNER JOIN Albums1 AS r
ON a.ArtistId = r.ArtistId
WHERE a.ArtistName = 'Joe Satriani';
AlbumName             Year                                              
--------------------  --------------------------------------------------
Surfing with the Ali  1987                                              
Flying in a Blue Dre  1989                                              
Black Swans and Worm  2010                                              

Актуализиране или премахване на колони

SQLite не поддържа клаузи като DROP COLUMN , ALTER COLUMN и ADD CONSTRAINT , които са част от стандарта SQL.

Има обаче други начини да направите тези неща със SQLite.

Промяна на колона

Да кажем, че искаме да променим името на Година колона до ReleaseDate . Също така искаме да премахнем NOT NULL ограничение.

За да направите това, можете да създадете нова таблица (с новата дефиниция на колона), да попълните таблицата с данните от старата таблица, след което след като приключите, да изтриете старата таблица и да преименувате новата, за да отразява оригиналното име.

Създайте новата таблица

Първо създайте новата таблица (забележете ReleaseDate вместо Year ).

CREATE TABLE Albums(
  AlbumId     INTEGER PRIMARY KEY, 
  AlbumName   TEXT NOT NULL,
  ReleaseDate TEXT,
  ArtistId INTEGER NOT NULL,
  FOREIGN KEY(ArtistId) REFERENCES Artists(ArtistId)
);

Така че вече имаме следните таблици в нашата база данни:

sqlite> .tables
Albums   Albums1  Artists

Вмъкване на данни

След това поставете данните от старата таблица.

Използвайте INSERT оператор, който избира данни от старата таблица и ги вмъква в новата таблица. Като това:

INSERT INTO Albums (AlbumId, AlbumName, ReleaseDate, ArtistId)
SELECT AlbumId, AlbumName, Year, ArtistId
FROM Albums1;

Проверете дали данните са били вмъкнати в новата таблица:

sqlite> SELECT * FROM Albums;
AlbumId   AlbumName                        ReleaseDate  ArtistId  
--------  -------------------------------  -----------  ----------
1         Killers                          1981         7         
2         Powerslave                       1984         7         
3         Surfing with the Alien           1987         1         
4         Heavy as a Really Heavy Thing    1995         11        
5         Yummy Yummy                      1994         17        
6         Out of the Loop                  2007         6         
7         Suck on This                     1989         13        
8         Pork Soda                        1993         13        
9         Sailing the Seas of Cheese       1991         13        
10        Flying in a Blue Dream           1989         1         
11        Black Swans and Wormhole Wizard  2010         1         
12        Somewhere in Time                1986         7         
13        Big Red Car                      1995         17        

Изхвърлете старата таблица

Сега, когато новата таблица е създадена и попълнена с данните, имаме избор да премахнем старата таблица, да я модифицираме или да я оставим такава, каквато е.

Нека го оставим засега, ще го премахнем по-късно.

Пуснете колона

За да пуснете колона, можете да създадете таблица от SELECT изявление. В SELECT изявление, пропуснете колоните, които искате да изпуснете — SQLite ще създаде само онези колони, които са включени в SELECT изявление.

CREATE TABLE Albums2 AS 
SELECT AlbumId, AlbumName, ArtistId 
FROM Albums1;

След това проверете дали данните са успешно вмъкнати в новата таблица:

sqlite> select * from Albums2;
AlbumId   AlbumName                        ArtistId  
--------  -------------------------------  ----------
1         Killers                          7         
2         Powerslave                       7         
3         Surfing with the Alien           1         
4         Heavy as a Really Heavy Thing    11        
5         Yummy Yummy                      17        
6         Out of the Loop                  6         
7         Suck on This                     13        
8         Pork Soda                        13        
9         Sailing the Seas of Cheese       13        
10        Flying in a Blue Dream           1         
11        Black Swans and Wormhole Wizard  1         
12        Somewhere in Time                7         
13        Big Red Car                      17        

Така че вече имаме следните таблици в нашата база данни:

sqlite> .tables
Albums   Albums1  Albums2  Artists

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. съхранява дълга стойност в базата данни на Android

  2. Актуализация на база данни и приложения на Android SQLite

  3. SQLite LIKE

  4. Как Group_Concat() работи в SQLite

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