sql >> Databasteknik >  >> RDS >> SQLite

Skapa en tabell i SQLite

För att skapa en tabell i SQLite, använd CREATE TABLE uttalande.

Denna sats accepterar tabellnamnet, kolumnnamnen och deras definitioner, såväl som några andra alternativ.

Exempel

Här är ett grundläggande exempel.

CREATE TABLE Products(
  ProductId INTEGER PRIMARY KEY AUTOINCREMENT, 
  ProductName TEXT NOT NULL,
  Price NUMERIC
);

Så i det här fallet, Products är namnet på tabellen och den innehåller tre kolumner; ProductId , ProductName och Price .

I det här exemplet har jag lagt till varje kolumns datatyp samt några begränsningar, men dessa är alla valfria.

Ange schemat

Tabellens namn kan (valfritt) föregås med schemanamnet. När du gör detta måste schemanamnet vara antingen main , temp , eller namnet på en bifogad databas.

Så jag kunde göra det här istället:

CREATE TABLE Store.Products(
  ProductId, 
  ProductName,
  Price
);

I det här fallet Store är namnet på den bifogade databasen som jag vill skapa tabellen i.

Kolumnnamnet kan följas av datatypen och eventuella begränsningar.

Datatyp är valfri

Ja, du läste rätt – datatypen är faktiskt valfri.

SQLite använder dynamisk typning och därför är datatypen för ett värde associerad med själva värdet, inte med dess behållare (kolumn). Detta till skillnad från de flesta andra SQL-databassystem, där du måste ange datatypen när du skapar kolumnen.

Så jag kunde göra det här istället:

CREATE TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Begränsningar och andra alternativ

Du har möjlighet att ange eventuella begränsningar eller andra alternativ som du vill ska tillämpas mot varje kolumn. Dessa inkluderar följande:

  • DEFAULT klausul. Detta anger ett standardvärde eller uttryck för varje kolumn i tabellen.
  • Koden COLLATE sats för att ange namnet på en sorteringssekvens som ska användas som standardsorteringssekvens för kolumnen. Standardvärdet är BINÄRT.
  • PRIMARY KEY klausul. Du kan valfritt ange att en kolumn är en primärnyckel. Både en kolumn och sammansatta (flera kolumner) primärnycklar stöds i SQLite.
  • SQLite stöder även begränsningar UNIQUE, NOT NULL, CHECK och FOREIGN KEY.
  • En genererad kolumnrestriktion (även kallad en beräknad kolumn). Dessa är kolumner vars värden är en funktion av andra kolumner i samma rad.
  • Om tabellen är en WITHOUT ROWID tabell. Detta är en prestandaoptimeringsteknik som utelämnar den "rovida" kolumnen som är en speciell kolumn som SQLite använder som standard. För mer information om denna teknik, se SQLite-dokumentationen.

Tillfälliga tabeller

Du kan ange att en tabell är en temporär tabell genom att använda antingen TEMP eller TEMPORARY nyckelord.

Om du använder ett av dessa nyckelord måste de infogas mellan CREATE och TABLE .

Här är ett exempel:

CREATE TEMP TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Du kan också lägga till temp schema om du vill.

Se Hur man skapar en tillfällig tabell för fler exempel på hur man skapar tillfälliga tabeller i SQLite.

Skapa en tabell från en annan tabell

Du kan också använda en CREATE TABLE ... AS SELECT uttalande för att skapa en ny tabell baserad på en annan tabell. När du gör detta fylls den nya tabellen med data från SELECT uttalande (som väljer data från en annan tabell eller tabeller).

Här är ett grundläggande exempel:

CREATE TABLE Store.Products2 AS 
SELECT * FROM Store.Products;

Detta exempel skapar en ny tabell som heter Products2 och fyller den med all data från Products tabell.

Alla kolumnnamn är desamma som i den ursprungliga tabellen.

Det är viktigt att notera att tabeller skapade på detta sätt inte har någon PRIMÄRNYCKEL och inga begränsningar av något slag. Dessutom är standardvärdet för varje kolumn NULL . Dessutom är standardsorteringssekvensen för varje kolumn i den nya tabellen BINÄR.


  1. Hjälp till att förbättra SQL Server-statistiken!

  2. PostgreSQL CASE ... AVSLUTA med flera villkor

  3. Hur kan jag ändra befintlig kolumn som identitet i PostgreSQL 11.1

  4. Jag får hela tiden felrelationen [TABELL] existerar inte