Sammanfattning :i denna handledning lär du dig hur du skapar nya tabeller med SQLite CREATE TABLE
uttalande med olika alternativ.
Introduktion till SQLite CREATE TABLE
uttalande
För att skapa en ny tabell i SQLite använder du CREATE TABLE
uttalande med följande syntax:
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 denna syntax:
- Ange först namnet på tabellen som du vill skapa efter
CREATE TABLE
nyckelord. Namnet på tabellen kan inte börja medsqlite_
eftersom det är reserverat för intern användning av SQLite. - Använd för det andra
IF NOT EXISTS
möjlighet att skapa en ny tabell om den inte finns. Försöker skapa en tabell som redan existerar utan att användaIF NOT EXISTS
alternativet kommer att resultera i ett fel. - För det tredje, ange eventuellt
schema_name
som det nya bordet tillhör. Schemat kan vara huvuddatabasen,temp
databas eller någon bifogad databas. - Fjärde, ange kolumnlistan för tabellen. Varje kolumn har ett namn, datatyp och kolumnbegränsningen. SQLite stöder
PRIMARY KEY
,UNIQUE
,NOT NULL
ochCHECK
kolumnbegränsningar. - Femte, ange tabellbegränsningarna som
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
ochCHECK
begränsningar. - Slutligen kan du eventuellt använda
WITHOUT ROWID
alternativ. Som standard har en rad i en tabell en implicit kolumn, som kallasrowid
,oid
eller_rowid_
kolumn.rowid
kolumnen lagrar en 64-bitars signerad heltalsnyckel som unikt identifierar raden inuti tabellen. Om du inte vill att SQLite skaparrowid
kolumnen anger duWITHOUT ROWID
alternativ. En tabell som innehållerrowid
kolumnen är känd som enrowid
tabell. Observera attWITHOUT ROWID
alternativet är endast tillgängligt i SQLite 3.8.2 eller senare.
Observera att den primära nyckeln för en tabell är en kolumn eller en grupp kolumner som unikt identifierar varje rad i tabellen.
SQLite CREATE TABLE
exempel
Anta att du måste hantera kontakter med SQLite.
Varje kontakt har följande information:
- Förnamn
- Efternamn
- E-post
- Telefon
Kravet är att mejl och telefon ska vara unika. Dessutom tillhör varje kontakt en eller flera grupper, och varje grupp kan ha noll eller många kontakter.
Baserat på dessa krav kom vi fram till tre tabeller:
contacts
tabell som lagrar kontaktinformation.groups
tabell som lagrar gruppinformation.contact_groups
tabell som lagrar relationen mellan kontakter och grupper.
Följande databasdiagram illustrerar tabeller:contacts
groups
, och contact_groups.
Följande uttalande skapar contacts
bord.
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)
Prova det
contact_id
är den primära nyckeln för contacts
bord.
Eftersom primärnyckeln består av en kolumn kan du använda kolumnbegränsningen.
first_name
och last_name
kolumner har TEXT
lagringsklassen och dessa kolumner är NOT NULL
. Det betyder att du måste ange värden när du infogar eller uppdaterar rader i contacts
bord.
E-postadressen och telefonen är unika, därför använder vi koden UNIQUE
begränsning för varje kolumn.
Följande sats skapar groups
tabell:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Prova det
groups
Tabellen är ganska enkel med två kolumner:group_id
och name
. group_id
kolumnen är den primära nyckelkolumnen.
Följande uttalande skapar contact_groups
tabell:
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)
Prova det
contact_groups
Tabellen har en primärnyckel som består av två kolumner:contact_id
och group_id
.
För att lägga till tabellens primärnyckelbegränsning använder du denna syntax:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Dessutom, contact_id
och group_id
är främmande nycklar. Därför använder du FOREIGN KEY
begränsning för att definiera en främmande nyckel för varje kolumn.
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)
Observera att vi kommer att diskutera i FOREIGN KEY
begränsning i detalj i den efterföljande handledningen.
I den här handledningen har du lärt dig hur du skapar en ny tabell med olika alternativ med SQLite CREATE TABLE
uttalande.