Oversigt :i denne øvelse lærer du, hvordan du opretter nye tabeller ved hjælp af SQLite CREATE TABLE
erklæring ved hjælp af forskellige muligheder.
Introduktion til SQLite CREATE TABLE
erklæring
For at oprette en ny tabel i SQLite, bruger du CREATE TABLE
sætning ved hjælp af følgende syntaks:
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)
I denne syntaks:
- Først skal du angive navnet på den tabel, du vil oprette efter
CREATE TABLE
søgeord. Navnet på tabellen kan ikke starte medsqlite_
fordi det er reserveret til intern brug af SQLite. - For det andet skal du bruge
HVIS IKKE FINDER
mulighed for at oprette en ny tabel, hvis den ikke eksisterer. Forsøg på at oprette en tabel, der allerede eksisterer uden at brugeHVIS IKKE FINDER
vil resultere i en fejl. - For det tredje skal du eventuelt angive
skemanavn
hvortil det nye bord hører. Skemaet kan være hoveddatabasen,temp
database eller enhver vedhæftet database. - For det fjerde skal du angive kolonnelisten for tabellen. Hver kolonne har et navn, datatype og kolonnebegrænsningen. SQLite understøtter
PRIMARY KEY
,UNIQUE
,IKKE NULL
, ogCHECK
kolonne begrænsninger. - For det femte, angiv tabelbegrænsningerne såsom
PRIMÆR NØGLE
,UDLANDS NØGLE
,UNIQUE
, ogCHECK
begrænsninger. - Til sidst kan du eventuelt bruge
WITHOUT ROWID
mulighed. Som standard har en række i en tabel en implicit kolonne, som omtales somrowid
,oid
eller_rowid_
kolonne.rovid
kolonne gemmer en 64-bit signeret heltalsnøgle, der unikt identificerer rækken inde i tabellen. Hvis du ikke ønsker, opretter SQLiterowid
kolonne, angiver duWITHOUT ROWID
mulighed. En tabel, der indeholderrowid
kolonne er kendt som enrovid
bord. Bemærk, atWITHOUT ROWID
indstillingen er kun tilgængelig i SQLite 3.8.2 eller nyere.
Bemærk, at den primære nøgle i en tabel er en kolonne eller en gruppe af kolonner, der unikt identificerer hver række i tabellen.
SQLite OPRET TABEL
eksempler
Antag, at du skal administrere kontakter ved hjælp af SQLite.
Hver kontakt har følgende oplysninger:
- Fornavn
- Efternavn
- Telefon
Kravet er, at mail og telefon skal være unikke. Derudover tilhører hver kontakt en eller flere grupper, og hver gruppe kan have nul eller mange kontakter.
Baseret på disse krav kom vi frem til tre tabeller:
kontaktpersonerne
tabel, der gemmer kontaktoplysninger.grupperne
tabel, der gemmer gruppeoplysninger.kontaktgrupperne
tabel, der gemmer forholdet mellem kontakter og grupper.
Følgende databasediagram illustrerer tabeller:kontakter
grupper
og contact_groups.
Følgende erklæring opretter kontaktpersonerne
tabel.
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)
Prøv det
contact_id
er den primære nøgle til kontaktpersonerne
tabel.
Fordi den primære nøgle består af én kolonne, kan du bruge kolonnebegrænsningen.
fornavn
og efternavn
kolonner har TEXT
lagerklasse, og disse kolonner er IKKE NULL
. Det betyder, at du skal angive værdier, når du indsætter eller opdaterer rækker i kontaktpersoner
tabel.
E-mailen og telefonen er unikke, derfor bruger vi
Følgende sætning opretter grupperne
tabel:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Prøv det
grupperne
tabel er ret enkel med to kolonner:group_id
og navn
. group_id
kolonne er den primære nøglekolonne.
Følgende erklæring opretter kontaktgrupper
tabel:
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)
Prøv det
kontaktgrupperne
tabel har en primær nøgle, der består af to kolonner:contact_id
og group_id
.
For at tilføje tabellens primærnøglebegrænsning bruger du denne syntaks:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Derudover er contact_id
og group_id
er fremmednøglerne. Derfor bruger du FOREIGN KEY
begrænsning for at definere en fremmednøgle for hver kolonne.
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)
Bemærk, at vi vil diskutere i FOREIGN KEY
begrænsning i detaljer i den efterfølgende tutorial.
I denne øvelse har du lært, hvordan du opretter en ny tabel med forskellige muligheder ved hjælp af SQLite CREATE TABLE
erklæring.