Shrnutí :v tomto tutoriálu se naučíte vytvářet nové tabulky pomocí SQLite CREATE TABLE
výpis pomocí různých možností.
Úvod do SQLite CREATE TABLE
prohlášení
Chcete-li vytvořit novou tabulku v SQLite, použijte CREATE TABLE
pomocí následující syntaxe:
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)
V této syntaxi:
- Nejprve zadejte název tabulky, kterou chcete vytvořit za
CREATE TABLE
klíčová slova. Název tabulky nemůže začínatsqlite_
protože je vyhrazen pro interní použití SQLite. - Zadruhé použijte
IF NOT EXISTS
možnost vytvořit novou tabulku, pokud neexistuje. Pokus o vytvoření tabulky, která již existuje, bez použitíIF NOT EXISTS
způsobí chybu. - Za třetí, volitelně zadejte
schema_name
ke kterému nová tabulka patří. Schéma může být hlavní databáze,temp
databáze nebo jakékoli připojené databáze. - Za čtvrté určete seznam sloupců tabulky. Každý sloupec má název, datový typ a omezení sloupce. SQLite podporuje
PRIMARY KEY
,UNIQUE
,NOT NULL
aCHECK
omezení sloupců. - Za páté, určete omezení tabulky, jako je
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
aCHECK
omezení. - Nakonec volitelně použijte
WITHOUT ROWID
volba. Ve výchozím nastavení má řádek v tabulce implicitní sloupec, který se nazývárowid
,oid
nebo_rowid_
sloupec.rowid
sloupec ukládá 64bitový klíč celého čísla se znaménkem, který jednoznačně identifikuje řádek v tabulce. Pokud nechcete, SQLite vytvořírowid
zadejteWITHOUT ROWID
volba. Tabulka, která obsahujerowid
sloupec je známý jakorowid
stůl. Všimněte si, žeWITHOUT ROWID
možnost je dostupná pouze v SQLite 3.8.2 nebo novějším.
Všimněte si, že primárním klíčem tabulky je sloupec nebo skupina sloupců, které jednoznačně identifikují každý řádek v tabulce.
SQLite CREATE TABLE
příklady
Předpokládejme, že musíte spravovat kontakty pomocí SQLite.
Každý kontakt má následující informace:
- Křestní jméno
- Příjmení
- Telefon
Požadavek je, že e-mail a telefon musí být jedinečné. Každý kontakt navíc patří do jedné nebo mnoha skupin a každá skupina může mít nula nebo mnoho kontaktů.
Na základě těchto požadavků jsme přišli se třemi tabulkami:
contacts
tabulka, která ukládá kontaktní informace.groups
tabulka, která ukládá informace o skupině.contact_groups
tabulka, která ukládá vztah mezi kontakty a skupinami.
Následující diagram databáze znázorňuje tabulky:contacts
groups
a contact_groups.
Následující příkaz vytvoří contacts
tabulka.
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)
Zkuste to
contact_id
je primární klíč contacts
tabulka.
Protože se primární klíč skládá z jednoho sloupce, můžete použít omezení sloupce.
first_name
a last_name
sloupce mají TEXT
storage class a tyto sloupce jsou NOT NULL
. To znamená, že musíte zadat hodnoty, když vkládáte nebo aktualizujete řádky v contacts
tabulka.
E-mail a telefon jsou jedinečné, proto používáme UNIQUE
omezení pro každý sloupec.
Následující příkaz vytvoří groups
tabulka:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Zkuste to
groups
tabulka je poměrně jednoduchá se dvěma sloupci:group_id
a name
. group_id
sloupec je sloupec primárního klíče.
Následující příkaz vytváří contact_groups
tabulka:
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)
Zkuste to
contact_groups
tabulka má primární klíč, který se skládá ze dvou sloupců:contact_id
a group_id
.
Chcete-li přidat omezení primárního klíče tabulky, použijte tuto syntaxi:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Kromě toho contact_id
a group_id
jsou cizí klíče. Proto používáte FOREIGN KEY
omezení definovat cizí klíč pro každý sloupec.
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)
Všimněte si, že budeme diskutovat v FOREIGN KEY
omezení podrobně v následujícím tutoriálu.
V tomto tutoriálu jste se naučili, jak vytvořit novou tabulku s různými možnostmi pomocí SQLite CREATE TABLE
prohlášení.