SQLite-gegevenstypen met voorbeeld

Gegevenstypen in SQLite zijn anders dan in andere databasebeheersystemen. In SQLite kunt u gegevenstypen normaal declareren, maar u kunt nog steeds elke waarde in elk gegevenstype opslaan.

In deze tutorial leer je-

SQLite wordt minder getypt. Er zijn geen gegevenstypen, u kunt elk type gegevens in elke kolom opslaan. Dit worden dynamische typen genoemd.

Als u in statische typen, zoals in andere databasebeheersystemen, een kolom met een geheel getal van het gegevenstype hebt gedeclareerd, kunt u alleen waarden van het gegevenstype geheel getal invoegen. In dynamische typen zoals in SQLite wordt het type kolom echter bepaald door de ingevoegde waarde. En dan slaat SQLite die waarde op, afhankelijk van het type.

SQLite-opslagklassen

In SQLite zijn er verschillende opslagmethoden, afhankelijk van het type waarde, deze verschillende opslagmethoden worden in SQLite opslagklassen genoemd.

Dit zijn de opslagklassen die beschikbaar zijn in SQLite:

  • NUL – deze opslagklasse wordt gebruikt om elke NULL-waarde op te slaan.
  • GEHEEL GETAL – elke numerieke waarde wordt opgeslagen als een geheel getal met teken (het kan zowel positieve als negatieve gehele getallen bevatten). De INTEGER-waarden in SQLite worden opgeslagen in 1, 2, 3, 4, 6 of 8 bytes aan opslagruimte, afhankelijk van de waarde van het getal.
  • ECHT – deze opslagklasse wordt gebruikt om de drijvende-kommawaarden op te slaan en ze worden opgeslagen in een opslag van 8 bytes.
  • TEKST - slaat tekstreeksen op. Het ondersteunt ook verschillende codering zoals UTF-8, UTF-16 BE of UTF-26LE.
  • BLOB – gebruikt om grote bestanden op te slaan, zoals afbeeldingen of tekstbestanden. De waarde wordt opgeslagen als byte-array hetzelfde als de invoerwaarde.

SQLite-affiniteitstype

Typeaffiniteit is het aanbevolen type gegevens dat in een kolom wordt opgeslagen. U kunt echter nog steeds elk type gegevens opslaan zoals u wilt, deze typen worden aanbevolen niet vereist.

Deze typen zijn geïntroduceerd in SQLite om de compatibiliteit tussen SQLite en andere databasebeheersystemen te maximaliseren.

Elke kolom die in een SQLite-database is gedeclareerd, krijgt een typeaffiniteit toegewezen, afhankelijk van het gedeclareerde gegevenstype. Hier de lift van type-affiniteiten in SQLite:

  • TEKST.
  • NUMERIEK.
  • GEHEEL GETAL.
  • ECHT.
  • BLOB.

Hier is hoe SQLite de affiniteit van de kolom bepaalt op basis van het gedeclareerde gegevenstype:

  1. INTEGER-affiniteit wordt toegewezen als het gedeclareerde type de tekenreeks ' bevat INT '.
  2. TEXT-affiniteit wordt toegewezen, als de kolom op het gegevenstype een van de volgende tekenreeksen bevat ' TEKST ',' CHAR , of ' CLOB '. Het type VARCHAR krijgt bijvoorbeeld de TEXT-affiniteit toegewezen.
  3. BLOB-affiniteit wordt toegewezen als er geen type is opgegeven voor de kolom of als het gegevenstype een BLOB is.
  4. REAL affiniteit wordt toegekend als het type een van de volgende strings bevat ' DUBBELE ',' ECHT , of ' VLOT '.
  5. NUMERIEKE affiniteit wordt toegewezen voor elk ander gegevenstype.

Er is ook een tabel op dezelfde pagina met enkele voorbeelden voor de toewijzing tussen SQLite-gegevenstypen en hun affiniteiten bepaald door deze regels:

Voorbeelden van het opslaan van gegevenstypen in SQLite:

Nummer opslaan met SQLite integer:

Elke kolom met gegevenstype bevat het woord 'INT', er wordt een INTEGER-typeaffiniteit aan toegewezen. Het wordt opgeslagen in een INTEGER-opslagklasse.

Alle volgende gegevenstypen worden toegewezen als een INTEGER-typeaffiniteit:

  • INT, INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • KLEININT, KLEIN, MIDDEL INT.

INTEGER type affiniteit in SQLite kan elk toegewezen geheel getal (positief of negatief) van 1 byte tot maximaal 8 bytes bevatten.

Nummers opslaan met SQLite REAL:

ECHTE getallen zijn de getallen met dubbele zwevende-kommaprecisie. SQLite heeft reële getallen opgeslagen als een array van 8 bytes. Hier is de lijst met gegevenstypen in SQLite die u kunt gebruiken om ECHTE getallen op te slaan:

  • ECHT.
  • DUBBELE.
  • DUBBELE PRECISIE.
  • VLOT.

Grote gegevens opslaan met SQLite BLOB:

Er is maar één manier om grote bestanden op te slaan in een SQLite-database en dat is het gebruik van het BLOB-gegevenstype. Dit gegevenstype wordt gebruikt om grote bestanden op te slaan, zoals afbeeldingen, bestanden (van elk type), enz. Het bestand wordt geconverteerd naar een bytes-array en vervolgens opgeslagen in dezelfde grootte als het invoerbestand.

SQLite Booleans opslaan:

SQLite heeft geen aparte BOOLEAN-opslagklasse. De BOOLEAN-waarden worden echter opgeslagen als INTEGERS met waarden 0 (als onwaar) of 1 (als waar).

SQLite-datums en -tijden opslaan:

U kunt datum of datumtijden declareren in SQLite met behulp van een van de volgende gegevenstypen:

  • DATUM
  • DATUM TIJD
  • TIJDSTEMPEL
  • TIJD

Merk op dat er geen aparte DATE- of DATETIME-opslagklasse is in SQLite. In plaats daarvan worden alle waarden die zijn gedeclareerd met een van de vorige gegevenstypen, als volgt opgeslagen in een opslagklasse, afhankelijk van het datumformaat van de ingevoegde waarde:

  • TEKST – als u de datumwaarde hebt ingevoegd in het formaat van de ISO8601-string ('JJJJ-MM-DD UU:MM:SS.SSS').
  • ECHT – als u de datumwaarde in de Juliaanse dagnummers hebt ingevoerd, het aantal dagen sinds de middag in Greenwich op 24 november 4714 v. Chr. Dan zou de datumwaarde worden opgeslagen als REAL.
  • GEHEEL GETAL als Unix Time, het aantal seconden sinds 1970-01-01 00:00:00 UTC.

Samenvatting:

SQLite ondersteunt een breed scala aan gegevenstypen. Maar tegelijkertijd is het zeer flexibel wat betreft datatypes. U kunt elk waardetype in elk gegevenstype plaatsen. SQLite introduceerde ook enkele nieuwe concepten in gegevenstypen, zoals typeaffiniteit en opslagklassen, in tegenstelling tot andere databasebeheersystemen.