SQLite
 sql >> Baza danych >  >> RDS >> SQLite

SQLite - Zmień tabelę

SQLite obsługuje ograniczony podzbiór standardu SQL ALTER TABLE oświadczenie.

W SQLite, ALTER TABLE polecenie pozwala użytkownikowi zmienić nazwę tabeli lub dodać nową kolumnę do istniejącej tabeli.

Dodaj kolumnę

ADD COLUMN składnia służy do dodawania nowej kolumny do istniejącej tabeli.

Dodajmy kolumnę do Wykonawców tabela:

ALTER TABLE Artists
ADD COLUMN Bio TEXT;

A następnie sprawdź tabelę z .schema polecenie:

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

Podczas korzystania z opcji ADD COLUMN obowiązują następujące ograniczenia składnia w SQLite:

  • Kolumna może nie mieć PRIMARY KEY lub UNIQUE ograniczenie.
  • Kolumna może nie mieć wartości domyślnej CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP lub wyrażenie w nawiasach.
  • Jeśli NOT NULL określono ograniczenie, kolumna musi mieć wartość domyślną inną niż NULL .
  • Jeśli włączone są ograniczenia klucza obcego i kolumna z REFERENCES została dodana klauzula, kolumna musi mieć wartość domyślną NULL .

Zmień nazwę tabeli

RENAME TO składnia umożliwia zmianę nazwy tabeli.

Zmieńmy nazwę jednego z naszych stołów:

ALTER TABLE Albums
RENAME TO Albums1;

I sprawdź to za pomocą .tables polecenie:

sqlite> .tables
Albums1  Artists

Teraz wszelkie dalsze operacje będą wymagały użycia nowej nazwy tabeli. Możemy więc wybrać dane w ten sposób:

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                                              

Aktualizowanie lub usuwanie kolumn

SQLite nie obsługuje klauzul, takich jak DROP COLUMN , ALTER COLUMN i ADD CONSTRAINT , które są częścią standardu SQL.

Istnieją jednak inne sposoby na zrobienie tego z SQLite.

Zmień kolumnę

Powiedzmy, że chcemy zmienić nazwę Roku kolumna do Data wydania . Ponadto chcemy usunąć NOT NULL ograniczenie.

Aby to zrobić, możesz utworzyć nową tabelę (z nową definicją kolumny), wypełnić tabelę danymi ze starej tabeli, a następnie po zakończeniu usunąć starą tabelę i zmienić nazwę nowej, aby odzwierciedlała oryginalną nazwę.

Utwórz nową tabelę

Najpierw utwórz nową tabelę (zwróć uwagę na ReleaseDate zamiast Year ).

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

W naszej bazie danych mamy teraz następujące tabele:

sqlite> .tables
Albums   Albums1  Artists

Wstaw dane

Następnie wstaw dane ze starej tabeli.

Użyj INSERT instrukcja, która wybiera dane ze starej tabeli i wstawia je do nowej tabeli. Tak:

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

Sprawdź, czy dane zostały wstawione do nowej tabeli:

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        

Upuść stary stół

Teraz, gdy nowa tabela została utworzona i wypełniona danymi, mamy możliwość usunięcia starej tabeli, zmodyfikowania jej lub pozostawienia bez zmian.

Zostawmy to na razie, usuniemy to później.

Upuść kolumnę

Aby usunąć kolumnę, możesz utworzyć tabelę z SELECT oświadczenie. W SELECT instrukcji, pomiń kolumny, które chcesz usunąć — SQLite utworzy tylko te kolumny, które są zawarte w SELECT oświadczenie.

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

Następnie sprawdź, czy dane zostały pomyślnie wstawione do nowej tabeli:

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        

W naszej bazie danych mamy teraz następujące tabele:

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. zapisz List<Model class> do sqlite

  2. PowerManager.PARTIAL_WAKE_LOCK android

  3. Wyprowadzanie wyników zapytania SQLite w postaci listy rozdzielanej tabulatorami

  4. Tworzenie wielotabelowych baz danych Android SQLite

  5. Android Studio 3.0 canary 1:błąd składni SQL