sql >> Databasteknik >  >> RDS >> SQLite

SQLite Skapa tabell

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 med sqlite_ 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ända IF 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 och CHECK kolumnbegränsningar.
  • Femte, ange tabellbegränsningarna som PRIMARY KEY , FOREIGN KEY , UNIQUE och CHECK begränsningar.
  • Slutligen kan du eventuellt använda WITHOUT ROWID alternativ. Som standard har en rad i en tabell en implicit kolumn, som kallas rowid , oid eller _rowid_ kolumn. rowid kolumnen lagrar en 64-bitars signerad heltalsnyckel som unikt identifierar raden inuti tabellen. Om du inte vill att SQLite skapar rowid kolumnen anger du WITHOUT ROWID alternativ. En tabell som innehåller rowid kolumnen är känd som en rowid tabell. Observera att WITHOUT 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 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.


  1. Hur man får återställningsmodellen för en databas i SQL Server med T-SQL

  2. Få kolumninformation för en tabell eller vy i SQL Server (T-SQL:sp_columns)

  3. UniVers tips

  4. Anpassad ordning i Oracle SQL