For at oprette en tabel i SQLite skal du bruge CREATE TABLE
erklæring.
Denne erklæring accepterer tabelnavnet, kolonnenavnene og deres definitioner samt nogle andre muligheder.
Eksempel
Her er et grundlæggende eksempel.
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY AUTOINCREMENT,
ProductName TEXT NOT NULL,
Price NUMERIC
);
Så i dette tilfælde Produkter
er navnet på tabellen, og den indeholder tre kolonner; ProductId
, Produktnavn
og Pris
.
I dette eksempel har jeg tilføjet hver kolonnes datatype samt nogle begrænsninger, men disse er alle valgfrie.
Angiv skemaet
Tabellens navn kan (valgfrit) foranstilles med skemanavnet. Når du gør dette, skal skemanavnet enten være main
, temp
, eller navnet på en vedhæftet database.
Så jeg kunne gøre dette i stedet:
CREATE TABLE Store.Products(
ProductId,
ProductName,
Price
);
I dette tilfælde Store
er navnet på den vedhæftede database, som jeg vil oprette tabellen i.
Kolonnenavnet kan efterfølges af datatypen og eventuelle begrænsninger.
Datatype er valgfri
Ja, du læste rigtigt – datatypen er faktisk valgfri.
SQLite bruger dynamisk indtastning, og derfor er datatypen for en værdi knyttet til selve værdien, ikke med dens container (kolonne). Dette er i modsætning til de fleste andre SQL-databasesystemer, hvor du skal angive datatypen, når du opretter kolonnen.
Så jeg kunne gøre dette i stedet:
CREATE TABLE Products(
ProductId,
ProductName,
Price
);
Begrænsninger og andre muligheder
Du har mulighed for at angive eventuelle begrænsninger eller andre muligheder, som du gerne vil have anvendt i hver kolonne. Disse omfatter følgende:
STANDARD
klausul. Dette angiver en standardværdi eller et standardudtryk for hver kolonne i tabellen.SAMLER klausul for at angive navnet på en sorteringssekvens, der skal bruges som standardsorteringssekvens for kolonnen. Standardværdien er BINÆR. PRIMÆR NØGLE
klausul. Du kan valgfrit angive, at en kolonne er en primær nøgle. Både enkelt kolonne og sammensatte (flere kolonne) primære nøgler er understøttet i SQLite.- SQLite understøtter også UNIQUE, NOT NULL, CHECK og FOREIGN KEY begrænsninger.
- En genereret kolonnebegrænsning (også kaldet en beregnet kolonne). Disse er kolonner, hvis værdier er en funktion af andre kolonner i samme række.
- Om tabellen er en
WITHOUT ROWID
bord. Dette er en præstationsoptimeringsteknik, der udelader kolonnen "rovid", som er en speciel kolonne, som SQLite bruger som standard. For mere information om denne teknik, se SQLite-dokumentationen.
Midlertidige tabeller
Du kan angive, at en tabel er en midlertidig tabel ved at bruge enten TEMP
eller MIDLERTIDIG
søgeord.
Hvis du bruger et af disse nøgleord, skal de indsættes mellem CREATE
og TABEL
.
Her er et eksempel:
CREATE TEMP TABLE Products(
ProductId,
ProductName,
Price
);
Du kan også tilføje temp
skema, hvis du ønsker det.
Se Sådan opretter du en midlertidig tabel for flere eksempler på oprettelse af midlertidige tabeller i SQLite.
Opret en tabel fra en anden tabel
Du kan også bruge en CREATE TABLE ... AS SELECT
sætning for at oprette en ny tabel baseret på en anden tabel. Når du gør dette, udfyldes den nye tabel med data fra SELECT
sætning (som vælger data fra en anden tabel eller tabeller).
Her er et grundlæggende eksempel:
CREATE TABLE Store.Products2 AS
SELECT * FROM Store.Products;
Dette eksempel opretter en ny tabel kaldet Products2
og udfylder den med alle data fra Produkter
bord.
Alle kolonnenavne er de samme som i den oprindelige tabel.
Det er vigtigt at bemærke, at tabeller oprettet på denne måde ikke har nogen PRIMÆR NØGLE og ingen begrænsninger af nogen art. Standardværdien for hver kolonne er også NULL
. Standardindsamlingssekvensen for hver kolonne i den nye tabel er også BINÆR.