Aby utworzyć tabelę w SQLite, użyj CREATE TABLE
oświadczenie.
Ta instrukcja akceptuje nazwę tabeli, nazwy kolumn i ich definicje, a także kilka innych opcji.
Przykład
Oto podstawowy przykład.
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY AUTOINCREMENT,
ProductName TEXT NOT NULL,
Price NUMERIC
);
W tym przypadku Products
jest nazwą tabeli i zawiera trzy kolumny; ProductId
, ProductName
i Price
.
W tym przykładzie dodałem typ danych każdej kolumny, a także pewne ograniczenia, ale wszystkie są opcjonalne.
Określ schemat
Nazwa tabeli może (opcjonalnie) być poprzedzona nazwą schematu. Kiedy to robisz, nazwą schematu musi być main
, temp
lub nazwę dołączonej bazy danych.
Zamiast tego mógłbym zrobić to:
CREATE TABLE Store.Products(
ProductId,
ProductName,
Price
);
W takim przypadku Store
to nazwa dołączonej bazy danych, w której chcę utworzyć tabelę.
Po nazwie kolumny może następować typ danych i wszelkie ograniczenia.
Typ danych jest opcjonalny
Tak, dobrze to przeczytałeś — typ danych jest w rzeczywistości opcjonalny.
SQLite używa dynamicznego wpisywania, dlatego typ danych wartości jest powiązany z samą wartością, a nie z jej kontenerem (kolumną). Jest to w przeciwieństwie do większości innych systemów baz danych SQL, w których musisz określić typ danych podczas tworzenia kolumny.
Zamiast tego mógłbym zrobić to:
CREATE TABLE Products(
ProductId,
ProductName,
Price
);
Ograniczenia i inne opcje
Masz możliwość określenia wszelkich ograniczeń lub innych opcji, które chcesz zastosować w każdej kolumnie. Należą do nich:
DEFAULT
klauzula. Określa domyślną wartość lub wyrażenie dla każdej kolumny w tabeli.COLLATE
klauzulę, aby określić nazwę kolejności zestawiania, która ma być używana jako domyślna kolejność zestawiania dla kolumny. Domyślna wartość to BINARNY.PRIMARY KEY
klauzula. Opcjonalnie można określić, że kolumna jest kluczem podstawowym. SQLite obsługuje klucze podstawowe zarówno jednokolumnowe, jak i złożone (wielokolumnowe).- SQLite obsługuje również ograniczenia typu UNIQUE, NOT NULL, CHECK i FOREIGN KEY.
- Wygenerowane ograniczenie kolumny (zwane także kolumną wyliczaną). Są to kolumny, których wartości są funkcją innych kolumn w tym samym wierszu.
- Czy tabela jest
WITHOUT ROWID
stół. Jest to technika optymalizacji wydajności, która pomija kolumnę „rowid”, która jest specjalną kolumną używaną domyślnie przez SQLite. Więcej informacji na temat tej techniki znajdziesz w dokumentacji SQLite.
Tabele tymczasowe
Możesz określić, że tabela jest tabelą tymczasową, używając albo TEMP
lub TEMPORARY
słowo kluczowe.
Jeśli używasz jednego z tych słów kluczowych, należy je wstawić między CREATE
i TABLE
.
Oto przykład:
CREATE TEMP TABLE Products(
ProductId,
ProductName,
Price
);
Możesz także dodać temp
schemat, jeśli chcesz.
Zobacz Jak utworzyć tabelę tymczasową, aby uzyskać więcej przykładów tworzenia tabel tymczasowych w SQLite.
Utwórz stół z innego stołu
Możesz także użyć CREATE TABLE ... AS SELECT
oświadczenie, aby utworzyć nową tabelę na podstawie innej tabeli. Gdy to zrobisz, nowa tabela zostanie wypełniona danymi z SELECT
instrukcja (która wybiera dane z innej tabeli lub tabel).
Oto podstawowy przykład:
CREATE TABLE Store.Products2 AS
SELECT * FROM Store.Products;
Ten przykład tworzy nową tabelę o nazwie Products2
i wypełnia go wszystkimi danymi z Products
stół.
Wszystkie nazwy kolumn są takie same jak w oryginalnej tabeli.
Należy zauważyć, że tabele utworzone w ten sposób nie mają KLUCZU PODSTAWOWEGO ani żadnych ograniczeń. Ponadto domyślną wartością każdej kolumny jest NULL
. Ponadto domyślna kolejność sortowania dla każdej kolumny nowej tabeli to BINARNY.