SQLite-gegevenstypen met voorbeeld

Inhoudsopgave:

Anonim

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-

  • Opslagklassen
  • Affiniteitstype
  • Voorbeelden van het opslaan van gegevenstypen in SQLite

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

Als u in statische typen, net als in andere databasebeheersystemen, een kolom hebt gedeclareerd met een gegevenstype geheel getal, kunt u alleen waarden van het gegevenstype geheel getal invoegen. In dynamische typen, zoals in SQLite, wordt het type kolom echter bepaald door de waarde die is ingevoegd. En vervolgens 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.

De volgende zijn de opslagklassen die beschikbaar zijn in SQLite:

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

SQLite-affiniteitstype

Type affiniteit 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 niet aanbevolen.

Deze typen zijn in SQLite geïntroduceerd 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 toename 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 " INT " bevat.
  2. TEXT-affiniteit wordt toegewezen als de kolom op het gegevenstype een van de volgende strings " TEXT ", " CHAR of" CLOB "bevat. Aan het type VARCHAR wordt bijvoorbeeld de TEXT-affiniteit toegewezen.
  3. BLOB-affiniteit wordt toegewezen als voor de kolom geen type is opgegeven of als het gegevenstype een BLOB is.
  4. REAL-affiniteit wordt toegewezen als het type een van de volgende strings " DOUB ", " REAL " of " FLOAT " bevat.
  5. NUMERIC-affiniteit wordt toegewezen aan 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 van het gegevenstype bevat het woord "INT" en krijgt een affiniteit van het type INTEGER toegewezen. Het wordt opgeslagen in een INTEGER-opslagklasse.

Alle volgende gegevenstypen worden toegewezen als een INTEGER-affiniteit:

  • INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • TINYINT, KLEIN, MEDIUM INT.

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

Getallen opslaan met SQLite REAL:

ECHTE getallen zijn het getal met precisie met dubbele drijvende komma's. 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 nummers op te slaan:

  • ECHT.
  • DUBBELE.
  • DUBBELE PRECISIE.
  • VLOTTER.

Grote gegevens opslaan met SQLite BLOB:

Er is maar één manier om grote bestanden op te slaan in een SQLite-database, en deze gebruikt 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 false) of 1 (als true).

SQLite-datums en -tijden opslaan:

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

  • DATUM
  • DATUM TIJD
  • TIJDSTAMP
  • TIJD

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

  • TEKST - als u de datumwaarde hebt ingevoegd in het formaat van de ISO8601-tekenreeks ("JJJJ-MM-DD UU: MM: SS.SSS").
  • ECHT - als u de datumwaarde in de Juliaanse dagnummers invoerde, het aantal dagen sinds 12.00 uur in Greenwich op 24 november 4714 v.Chr. Dan zou de datumwaarde worden opgeslagen als ECHT.
  • INTEGER als Unix Time, het aantal seconden sinds 1970-01-01 00:00:00 UTC.

Overzicht:

SQLite ondersteunt een breed scala aan gegevenstypen. Maar tegelijkertijd is het erg flexibel met betrekking tot datatypes. U kunt elk waardetype in elk gegevenstype plaatsen. SQLite introduceerde ook enkele nieuwe concepten in datatypes, zoals type affiniteit en opslagklassen, in tegenstelling tot andere databasebeheersystemen.