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 TABLEnyckelord. 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 EXISTSmöjlighet att skapa en ny tabell om den inte finns. Försöker skapa en tabell som redan existerar utan att användaIF NOT EXISTSalternativet kommer att resultera i ett fel. - För det tredje, ange eventuellt
schema_namesom det nya bordet tillhör. Schemat kan vara huvuddatabasen,tempdatabas 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 NULLochCHECKkolumnbegränsningar. - Femte, ange tabellbegränsningarna som
PRIMARY KEY,FOREIGN KEY,UNIQUEochCHECKbegränsningar. - Slutligen kan du eventuellt använda
WITHOUT ROWIDalternativ. Som standard har en rad i en tabell en implicit kolumn, som kallasrowid,oideller_rowid_kolumn.rowidkolumnen lagrar en 64-bitars signerad heltalsnyckel som unikt identifierar raden inuti tabellen. Om du inte vill att SQLite skaparrowidkolumnen anger duWITHOUT ROWIDalternativ. En tabell som innehållerrowidkolumnen är känd som enrowidtabell. Observera attWITHOUT ROWIDalternativet ä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:
contactstabell som lagrar kontaktinformation.groupstabell som lagrar gruppinformation.contact_groupstabell 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 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)
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.