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 TABLEsø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 FINDERmulighed for at oprette en ny tabel, hvis den ikke eksisterer. Forsøg på at oprette en tabel, der allerede eksisterer uden at brugeHVIS IKKE FINDERvil resultere i en fejl. - For det tredje skal du eventuelt angive
skemanavnhvortil det nye bord hører. Skemaet kan være hoveddatabasen,tempdatabase 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, ogCHECKkolonne begrænsninger. - For det femte, angiv tabelbegrænsningerne såsom
PRIMÆR NØGLE,UDLANDS NØGLE,UNIQUE, ogCHECKbegrænsninger. - Til sidst kan du eventuelt bruge
WITHOUT ROWIDmulighed. Som standard har en række i en tabel en implicit kolonne, som omtales somrowid,oideller_rowid_kolonne.rovidkolonne gemmer en 64-bit signeret heltalsnøgle, der unikt identificerer rækken inde i tabellen. Hvis du ikke ønsker, opretter SQLiterowidkolonne, angiver duWITHOUT ROWIDmulighed. En tabel, der indeholderrowidkolonne er kendt som enrovidbord. Bemærk, atWITHOUT ROWIDindstillingen 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:
kontaktpersonernetabel, der gemmer kontaktoplysninger.gruppernetabel, der gemmer gruppeoplysninger.kontaktgruppernetabel, 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 ACTIONCode language: SQL (Structured Query Language) (sql) FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTIONCode 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.