Podsumowanie :w tym samouczku dowiesz się, jak tworzyć nowe tabele za pomocą SQLite CREATE TABLE
oświadczenie przy użyciu różnych opcji.
Wprowadzenie do SQLite CREATE TABLE
oświadczenie
Aby utworzyć nową tabelę w SQLite, użyj CREATE TABLE
oświadczenie przy użyciu następującej składni:
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
Code language: SQL (Structured Query Language) (sql)
W tej składni:
- Najpierw określ nazwę tabeli, którą chcesz utworzyć po
CREATE TABLE
słowa kluczowe. Nazwa tabeli nie może zaczynać się odsqlite_
ponieważ jest zarezerwowany do wewnętrznego użytku SQLite. - Po drugie, użyj
IF NOT EXISTS
możliwość utworzenia nowej tabeli, jeśli nie istnieje. Próba utworzenia tabeli, która już istnieje bez użyciaIF NOT EXISTS
opcja spowoduje błąd. - Po trzecie, opcjonalnie określ
schema_name
do której należy nowa tabela. Schemat może być główną bazą danych,temp
baza danych lub dowolna dołączona baza danych. - Po czwarte, określ listę kolumn tabeli. Każda kolumna ma nazwę, typ danych i ograniczenie dotyczące kolumny. SQLite obsługuje
PRIMARY KEY
,UNIQUE
,NOT NULL
iCHECK
ograniczenia kolumn. - Po piąte, określ ograniczenia tabeli, takie jak
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
iCHECK
ograniczenia. - Na koniec opcjonalnie użyj
WITHOUT ROWID
opcja. Domyślnie wiersz w tabeli ma niejawną kolumnę, która jest określana jakorowid
,oid
lub_rowid_
kolumna.rowid
kolumna przechowuje 64-bitowy klucz liczby całkowitej ze znakiem, który jednoznacznie identyfikuje wiersz wewnątrz tabeli. Jeśli nie chcesz, aby SQLite utworzyłrowid
kolumna, określaszWITHOUT ROWID
opcja. Tabela zawierającarowid
kolumna jest znana jakorowid
stół. Zauważ, żeWITHOUT ROWID
opcja jest dostępna tylko w SQLite 3.8.2 lub nowszym.
Pamiętaj, że kluczem podstawowym tabeli jest kolumna lub grupa kolumn, które jednoznacznie identyfikują każdy wiersz w tabeli.
SQLite CREATE TABLE
przykłady
Załóżmy, że musisz zarządzać kontaktami za pomocą SQLite.
Każdy kontakt zawiera następujące informacje:
- Imię
- Nazwisko
- Telefon
Wymaganiem jest, aby adres e-mail i telefon były unikalne. Ponadto każdy kontakt należy do jednej lub wielu grup, a każda grupa może mieć zero lub wiele kontaktów.
W oparciu o te wymagania opracowaliśmy trzy tabele:
contacts
tabela przechowująca informacje kontaktowe.groups
tabela przechowująca informacje o grupie.contact_groups
tabela, która przechowuje relacje między kontaktami i grupami.
Poniższy diagram bazy danych ilustruje tabele:contacts
groups
i contact_groups.
Poniższa instrukcja tworzy contacts
tabela.
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
contact_id
jest głównym kluczem contacts
tabela.
Ponieważ klucz podstawowy składa się z jednej kolumny, możesz użyć ograniczenia kolumny.
first_name
i last_name
kolumny mają TEXT
klasa pamięci i te kolumny są NOT NULL
. Oznacza to, że musisz podać wartości podczas wstawiania lub aktualizowania wierszy w contacts
tabela.
Adres e-mail i telefon są unikalne, dlatego używamy UNIQUE
ograniczenie dla każdej kolumny.
Poniższa instrukcja tworzy groups
tabela:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
groups
tabela jest dość prosta z dwiema kolumnami:group_id
i name
. group_id
kolumna jest główną kolumną klucza.
Poniższa instrukcja tworzy contact_groups
tabela:
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
contact_groups
tabela ma klucz podstawowy, który składa się z dwóch kolumn:contact_id
i group_id
.
Aby dodać ograniczenie klucza podstawowego tabeli, użyj następującej składni:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Ponadto contact_id
i group_id
są klucze obce. Dlatego używasz FOREIGN KEY
ograniczenie do zdefiniowania klucza obcego dla każdej kolumny.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
Zwróć uwagę, że omówimy to w FOREIGN KEY
szczegółowo w kolejnym samouczku.
W tym samouczku nauczyłeś się tworzyć nową tabelę z różnymi opcjami przy użyciu SQLite CREATE TABLE
oświadczenie.