Samenvatting :in deze tutorial leer je hoe je nieuwe tabellen maakt met SQLite CREATE TABLE
verklaring met verschillende opties.
Inleiding tot SQLite CREATE TABLE
verklaring
Om een nieuwe tabel in SQLite aan te maken, gebruik je CREATE TABLE
statement met de volgende syntaxis:
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)
In deze syntaxis:
- Geef eerst de naam op van de tabel die u wilt maken na de
CREATE TABLE
trefwoorden. De naam van de tabel mag niet beginnen metsqlite_
omdat het is gereserveerd voor intern gebruik van SQLite. - Ten tweede, gebruik
IF NOT EXISTS
optie om een nieuwe tabel te maken als deze niet bestaat. Poging om een tabel te maken die al bestaat zonder deIF NOT EXISTS
. te gebruiken optie resulteert in een fout. - Ten derde, specificeer optioneel de
schema_name
waartoe de nieuwe tabel behoort. Het schema kan de hoofddatabase zijn,temp
database of een bijgevoegde database. - Ten vierde, specificeer de kolomlijst van de tabel. Elke kolom heeft een naam, gegevenstype en de kolombeperking. SQLite ondersteunt
PRIMARY KEY
,UNIQUE
,NOT NULL
, enCHECK
kolombeperkingen. - Ten vijfde, specificeer de tabelbeperkingen zoals
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
, enCHECK
beperkingen. - Gebruik tot slot optioneel de
WITHOUT ROWID
optie. Standaard heeft een rij in een tabel een impliciete kolom, die derowid
wordt genoemd. ,oid
of_rowid_
kolom. Derowid
kolom slaat een 64-bits ondertekende integersleutel op die de rij in de tabel op unieke wijze identificeert. Als u niet wilt dat SQLite derowid
kolom, specificeert u deWITHOUT ROWID
optie. Een tabel die derowid
. bevat kolom staat bekend als eenrowid
tafel. Merk op dat deWITHOUT ROWID
optie is alleen beschikbaar in SQLite 3.8.2 of hoger.
Houd er rekening mee dat de primaire sleutel van een tabel een kolom of een groep kolommen is die elke rij in de tabel op unieke wijze identificeert.
SQLite CREATE TABLE
voorbeelden
Stel dat u contacten moet beheren met SQLite.
Elk contact heeft de volgende informatie:
- Voornaam
- Achternaam
- Telefoon
De eis is dat de e-mail en telefoon uniek moeten zijn. Bovendien behoort elk contact tot een of meerdere groepen en kan elke groep nul of veel contacten hebben.
Op basis van deze vereisten kwamen we tot drie tabellen:
- De
contacts
tabel met contactgegevens. - De
groups
tabel waarin groepsinformatie wordt opgeslagen. - De
contact_groups
tabel die de relatie tussen contacten en groepen opslaat.
Het volgende databasediagram illustreert tabellen:contacts
groups
, en contact_groups.
De volgende instructie creëert de contacts
tafel.
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)
Probeer het
De contact_id
is de primaire sleutel van de contacts
tafel.
Omdat de primaire sleutel uit één kolom bestaat, kunt u de kolombeperking gebruiken.
De first_name
en last_name
kolommen hebben TEXT
opslagklasse en deze kolommen zijn NOT NULL
. Het betekent dat u waarden moet opgeven wanneer u rijen invoegt of bijwerkt in de contacts
tafel.
Het e-mailadres en telefoonnummer zijn uniek, daarom gebruiken we de UNIQUE
beperking voor elke kolom.
De volgende instructie creëert de groups
tafel:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Probeer het
De groups
tabel is vrij eenvoudig met twee kolommen:group_id
en name
. De group_id
kolom is de primaire sleutelkolom.
De volgende instructie creëert contact_groups
tafel:
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)
Probeer het
De contact_groups
tabel heeft een primaire sleutel die uit twee kolommen bestaat:contact_id
en group_id
.
Om de primaire sleutelbeperking van de tabel toe te voegen, gebruikt u deze syntaxis:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Daarnaast is de contact_id
en group_id
zijn de buitenlandse sleutels. Daarom gebruikt u FOREIGN KEY
beperking om een externe sleutel voor elke kolom te definiëren.
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)
Merk op dat we zullen bespreken in de FOREIGN KEY
beperking in detail in de volgende tutorial.
In deze zelfstudie hebt u geleerd hoe u een nieuwe tabel met verschillende opties kunt maken met behulp van SQLite CREATE TABLE
verklaring.