SQLite Datatyper: Heltal, Text, Numerisk, Real, Blob

โšก Smart sammanfattning

SQLite Datatyper fungerar annorlunda รคn andra databaser eftersom SQLite anvรคnder dynamisk typing, lagrar valfritt vรคrde i valfri kolumn. Lagringsklasser, typtillhรถrighet och deklarerade typnamn avgรถr tillsammans hur varje vรคrde fysiskt sparas pรฅ disken.

  • ๐Ÿงฉ Dynamisk Typing: SQLite รคr dynamiskt typad, sรฅ vรคrdet du infogar, inte kolumndefinitionen, avgรถr hur data lagras.
  • ๐Ÿ—„๏ธ Lagringsklasser: Fem lagringsklasser โ€” NULL, INTEGER, REAL, TEXT och BLOB โ€” beskriver hur varje vรคrde lagras pรฅ disken.
  • ๐ŸŽฏ Typaffinitet: Varje kolumn fรฅr en rekommenderad tillhรถrighet โ€” TEXT, NUMERIC, INTEGER, REAL eller BLOB โ€” frรฅn sitt deklarerade typnamn.
  • ๐Ÿ”ข Nummerlagring: Varje deklarerad typ som innehรฅller INT blir INTEGER, medan REAL, DOUBLE och FLOAT hรฅller flyttal i รฅtta byte.
  • ๐Ÿ“… Datum och booleska vรคrden: SQLite har ingen dedikerad DATE- eller BOOLEAN-klass och lagrar dessa vรคrden som TEXT, REAL eller INTEGER istรคllet.
  • ๐Ÿค– AI-hjรคlp: AI text-till-SQL-assistenter och GitHub Copilot genererar SQLite kolumndefinitioner och vรคlj datatyper frรฅn vanlig engelska.

SQLite Datatyper

Avsnitten nedan fรถrklarar hur SQLite hanterar datatyper, med bรถrjan i de fem lagringsklasserna, sedan typtillhรถrighet och dess tilldelningsregler, och slutligen bearbetade exempel pรฅ lagring av heltal, reella tal, BLOB, booleska tal och datum.

Data skrivs in SQLite skiljer sig frรฅn de i andra databashanteringssystem. SQLite, kan du deklarera datatyper normalt, men du kan fortfarande lagra vilket vรคrde som helst i vilken datatyp som helst.

SQLite รคr typlรถs. Det finns inga fasta datatyper; du kan lagra vilken typ av data du vill i vilken kolumn som helst. Detta kallas dynamisk typping.

I statiska typer, liksom i andra databashanteringssystem, kan du bara infoga vรคrden av datatypen heltal om du deklarerar en kolumn med datatypen heltal. Dรคremot i dynamiska typer, som i SQLite, kolumntypen bestรคms av det infogade vรคrdet, och sedan SQLite lagrar det vรคrdet beroende pรฅ dess typ.

SQLite Fรถrvaringsklasser

In SQLite Det finns olika lagringsmetoder beroende pรฅ vรคrdetyp; dessa olika lagringsmetoder kallas lagringsklasser i SQLite.

Fรถljande รคr de lagringsklasser som finns tillgรคngliga i SQLite:

  • NULL โ€“ denna lagringsklass anvรคnds fรถr att lagra alla NULL-vรคrden.
  • HELTAL โ€“ alla numeriska vรคrden lagras som ett teckenfรถrtecknat heltal (det kan innehรฅlla bรฅde positiva och negativa heltal). HELTALSvรคrdena i SQLite lagras i antingen 1, 2, 3, 4, 6 eller 8 byte lagring beroende pรฅ vรคrdet pรฅ numret.
  • VERKLIG โ€“ denna lagringsklass anvรคnds fรถr att lagra flyttalvรคrdena, och de lagras i 8 byte lagringsutrymme.
  • TEXT โ€“ lagrar textstrรคngar. Den stรถder รคven olika kodningar som UTF-8, UTF-16BE eller UTF-16LE.
  • KLICK โ€“ anvรคnds fรถr att lagra stora filer, som bilder eller textfiler. Vรคrdet lagras som en byte-array, samma som inmatningsvรคrdet.

SQLite Affinitetstyp

Typtillhรถrighet รคr den rekommenderade typen av data som lagras i en kolumn. Du kan dock fortfarande lagra vilken typ av data du vill; dessa typer rekommenderas, inte obligatoriska.

Dessa typer introducerades i SQLite fรถr att maximera kompatibiliteten mellan SQLite och andra databashanteringssystems.

Varje kolumn som deklareras i en SQLite databasen tilldelas en typtillhรถrighet beroende pรฅ dess deklarerade datatyp. Hรคr รคr listan รถver typtillhรถrigheter i SQLite:

  • TEXT.
  • NUMERISK.
  • HELTAL.
  • VERKLIG.
  • KLICK.

Hรคr รคr hur SQLite bestรคmmer en kolumns affinitet frรฅn dess deklarerade datatyp:

  • INTEGER-affinitet tilldelas om den deklarerade typen innehรฅller strรคng "INT".
  • TEXT-affinitet tilldelas om kolumnen innehรฅller en av fรถljande strรคngar i sin datatyp: "TEXT", "CHAR" eller "CLOB". Till exempel kommer typen VARCHAR att tilldelas TEXT-affiniteten.
  • BLOB-affinitet tilldelas om kolumnen inte har nรฅgon typ angiven eller om datatypen รคr en BLOB.
  • REAL-affinitet tilldelas om typen innehรฅller en av fรถljande strรคngar: โ€DOUBโ€, โ€REALโ€ eller โ€FLOATโ€.
  • NUMERISK affinitet tilldelas fรถr alla andra datatyper.

Det finns ocksรฅ en tabell nedan som visar nรฅgra exempel pรฅ kartanping mellan SQLite datatyper och deras affinitet bestรคms av dessa regler:

Kartaping mellan SQLite deklarerade datatyper och deras tilldelade typaffiniteter, med exempel pรฅ INT, CHAR, TEXT, BLOB, REAL, FLOAT och NUMERIC.

Exempel pรฅ att lagra datatyper i SQLite

Lagra nummer med SQLite HELTAL

Om nรฅgon kolumn har en datatyp som innehรฅller ordet "INT" kommer den att tilldelas en INTEGER-typtillhรถrighet. Den kommer att lagras i en INTEGER-lagringsklass.

Alla fรถljande datatyper tilldelas en INTEGER-typaffinitet:

  • INT, INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • LITENINT, LITENINT, MEDELINT.

INTEGER typ affinitet i SQLite kan hรฅlla vilket tilldelat heltal som helst (positivt eller negativt) frรฅn 1 byte upp till maximalt 8 byte.

Lagra nummer med SQLite VERKLIG

REELLA tal รคr tal med dubbel flyttalsprecision. SQLite lagrar reella tal som en 8-byte-matris. Hรคr รคr listan รถver datatyper i SQLite som du kan anvรคnda fรถr att lagra VERKLIGA nummer:

  • VERKLIG.
  • DUBBEL.
  • DUBBEL PRECISION.
  • FLYTA.

Lagra stora data med SQLite KLICK

Det finns bara ett sรคtt att lagra stora filer i en SQLite databas, och det anvรคnder datatypen BLOB. Denna datatyp anvรคnds fรถr att lagra stora filer som bilder eller filer av vilken typ som helst. Filen konverteras till en byte-array och lagras sedan i samma storlek som indatafilen.

lagring SQLite Booleans

SQLite har ingen separat BOOLESK lagringsklass. Istรคllet lagras BOOLESKA vรคrden som HELTAL, dรคr 0 representerar falskt och 1 representerar sant.

lagring SQLite datum och tider

Du kan ange datum eller datum-tider i SQLite anvรคnder nรฅgon av fรถljande datatyper:

  • DATUM
  • Datum Tid
  • TIDSSTร„MPEL
  • TID

Observera att det inte finns nรฅgon separat lagringsklass fรถr DATE eller DATETIME i SQLiteIstรคllet lagras alla vรคrden som deklarerats med en av de fรถregรฅende datatyperna i en lagringsklass beroende pรฅ datumformatet fรถr det infogade vรคrdet, enligt fรถljande:

  • TEXT โ€“ om du infogar datumvรคrdet i formatet fรถr en ISO8601-strรคng (โ€œร…ร…ร…ร…-MM-DD TT:MM:SSS).
  • VERKLIG โ€“ om du infogar datumvรคrdet som ett julianskt dagtal, antalet dagar sedan middagstid i Greenwich den 24 november 4714 f.Kr. Datumvรคrdet lagras dรฅ som REALT.
  • HELTAL - som Unix Tid, antalet sekunder sedan 1970-01-01 00:00:00 UTC.

Vanliga frรฅgor

En lagringsklass รคr hur SQLite lagrar fysiskt ett vรคrde: NULL, INTEGER, REAL, TEXT eller BLOB, bestรคmt per vรคrde vid kรถrning. Typtillhรถrighet รคr den klass en kolumn fรถredrar, vald frรฅn dess deklarerade typnamn, vilket SQLite fรถrsรถker ansรถka.

Nej. SQLite ignorerar talet inom parentes, sรฅ VARCHAR(50) och VARCHAR beter sig identiskt. Bรฅda fรฅr TEXT-affinitet eftersom typnamnet innehรฅller CHAR, och SQLite infรถr ingen lรคngdgrรคns fรถrutom det globala SQLITE_MAX_LENGTH-vรคrdet.

Anvรคnd funktionen typeof() i en frรฅga, till exempel SELECT typeof(column) FROM table. Den returnerar vรคrdets reella lagringsklass โ€” null, integer, real, text eller blob โ€” som kan skilja sig frรฅn kolumnens deklarerade typ pรฅ grund av dynamisk ty.ping.

STRICT-tabeller, tillagda i SQLite 3.37, stรคng av typtillhรถrighet och avvisa alla vรคrden som inte matchar en kolumns deklarerade typ. Endast INT, INTEGER, REAL, TEXT, BLOB och ANY รคr tillรฅtna, vilket ger den stela typenping hittades i andra databaser.

Lagra pengar som ett HELTAL i den minsta enheten, till exempel cent, fรถr att undvika avrundningsfel vid flyttalsvรคrden i REAL-format. Fรถr variabel eller mycket hรถg precision bevarar TEXT den exakta talstrรคngen. SQLite har ingen dedikerad pengatyp med fast punkt.

Instรคllningen SQLITE_MAX_LENGTH begrรคnsar ett TEXT- eller BLOB-vรคrde och har som standard en miljard byte. Den nuvarande implementeringen stรถder upp till 2 147 483 647 byte. Du kan sรคnka grรคnsen vid kรถrning med sqlite3_limit()-grรคnssnittet vid behov.

Ja. AI-text-till-SQL-assistenter omvandlar en beskrivning pรฅ vanligt engelska till CREATE TABLE-satser och vรคljer SQLite lagringsklasser och affiniteter som INTEGER, TEXT och REAL. Att tillhandahรฅlla befintliga kolumntyper fรถrbรคttrar noggrannheten, och genererad SQL bรถr granskas innan kรถrning.

Ja. GitHub Copilot fรถreslรฅr kolumndefinitioner med SQLite typer som INTEGER, TEXT, REAL och BLOB inline i editorer som VS CodeDen lรคser omgivande schema- och migreringskod, sรฅ dess kompletteringar รฅteranvรคnder dina riktiga tabell- och kolumnnamn.

Sammanfatta detta inlรคgg med: