SQLite andmetüübid on erinevad võrreldes teiste andmebaaside haldussüsteemidega. SQLite'is saate andmetüüpe normaalselt deklareerida, kuid saate siiski salvestada mis tahes väärtuse mis tahes andmetüübis.
Selles õpetuses saate teada
- Salvestusklassid
- Ühise huvi tüüp
- Näited andmetüüpide salvestamisest SQLite'i
SQLite kirjutatakse vähem. Andmetüüpe pole, võite igas veerus salvestada mis tahes tüüpi andmeid. Seda nimetatakse dünaamilisteks tüüpideks.
Staatilistes tüüpides, nagu ka teistes andmebaaside haldussüsteemides, saate deklareerida veeru andmetüübiga täisarv, sisestada ainult andmetüübi täisarv väärtused. Kuid dünaamilistes tüüpides nagu SQLite'is määratakse veeru tüüp sisestatud väärtuse järgi. Ja siis SQLite salvestab selle väärtuse sõltuvalt selle tüübist.
SQLite salvestusklassid
SQLite'is on sõltuvalt väärtuse tüübist erinevad salvestusmeetodid, neid erinevaid salvestusmeetodeid nimetatakse SQLite'is salvestusklassideks.
SQLite'is on saadaval järgmised salvestusklassid:
- NULL - seda salvestusklassi kasutatakse mis tahes NULL-väärtuse salvestamiseks.
- INTEGER - mis tahes arvväärtus salvestatakse täisarvu allkirjastatuna (see võib sisaldada nii positiivseid kui ka negatiivseid täisarvu väärtusi). SQLite väärtused INTEGER salvestatakse numbri väärtusest sõltuvalt kas 1, 2, 3, 4, 6 või 8 baiti.
- PÄRIS - seda salvestusklassi kasutatakse ujukoma väärtuste salvestamiseks ja neid hoitakse 8-baidises salvestusruumis.
- TEXT - salvestab tekstistringid. Samuti toetab see erinevaid kodeeringuid, näiteks UTF-8, UTF-16 BE või UTF-26LE.
- BLOB - kasutatakse suurte failide, näiteks piltide või tekstifailide, salvestamiseks. Väärtus salvestatakse baitide massiivina sama mis sisendväärtus.
SQLite ühise huvi tüüp
Tüübi afiinsus on soovitatav veerus salvestatud andmete tüüp. Siiski saate endiselt salvestada mis tahes tüüpi andmeid vastavalt soovile, soovitatav pole neid tüüpe vajada.
Need tüübid võeti kasutusele SQLite'is, et maksimeerida SQLite ja muu andmebaasi haldussüsteemi ühilduvust.
Igale SQLite andmebaasis deklareeritud veerule määratakse tüübi afiinsus sõltuvalt selle deklareeritud andmetüübist. Siin on tüübisuguluste tõus SQLite'is:
- TEKST.
- NUMERIKA.
- INTEGRE.
- PÄRIS.
- MÄNG.
Siit saate teada, kuidas SQLite määrab veeru afiinsuse deklareeritud andmetüübi järgi:
- INTEGER afiinsus määratakse juhul, kui deklareeritud tüüp sisaldab stringi " INT ".
- TEXT-afiinsus määratakse, kui veerg sisaldab oma andmetüübil ühte järgmistest stringidest " TEXT ", " CHAR " või " CLOB ". Näiteks määratakse tüübile VARCHAR TEXT-afiinsus.
- BLOB-afiinsus määratakse, kui veerul pole määratud tüüpi või andmetüübiks on BLOB.
- PÄRIS afiinsus määratakse, kui tüüp sisaldab ühte järgmistest stringidest " DOUB ", " REAL " või " FLOAT ".
- NUMERIC afiinsus määratakse mis tahes muu andmetüübi jaoks.
Samal lehel on ka tabel, kus on toodud mõned näited SQLite'i andmetüüpide ja nende reeglitega määratud ühilduvuste kaardistamiseks:
Näited andmetüüpide säilitamisest SQLite'is:
SQLite täisarvuga numbri salvestamine:
Iga andmetüübi veerg sisaldab sõna "INT", sellele määratakse INTEGER-tüüpi afiinsus. See salvestatakse INTEGER salvestusklassis.
Kõik järgmised andmetüübid on määratud INTEGER-tüüpi afiinsusena:
- INT, INTEGER, BIGINT.
- INT2, INT4, INT8.
- TINYINT, SMALLINT, MEDIUM INT.
INTEGERi tüüpi afiinsus SQLite'is võib hoida mis tahes määratud täisarvu (positiivset või negatiivset) vahemikus 1 bait kuni maksimaalselt 8 baiti.
Numbrite salvestamine SQLite REAL-iga:
PÄRIS numbrid on kahekordse ujukoma täpsusega arv. SQLite salvestas reaalarvud 8 baiti massiivina. Siin on SQLite andmetüüpide loend, mida saate kasutada REAL-numbrite salvestamiseks:
- PÄRIS.
- Topelt.
- Topelttäpsus.
- UJU.
Suurte andmete salvestamine SQLite BLOB-iga:
Suurte failide salvestamiseks SQLite'i andmebaasi on ainult üks viis ja see kasutab andmetüüpi BLOB. Seda andmetüüpi kasutatakse suurte failide, näiteks piltide, failide (mis tahes tüüpi) jne salvestamiseks. Fail teisendatakse baitide massiiviks ja salvestatakse seejärel sisendfailiga samas suuruses.
SQLite Booleansi salvestamine:
SQLite'il pole eraldi BOOLEANi talletusklass. BOOLEANi väärtused salvestatakse aga INTEGERS väärtusega 0 (vale) või 1 (tõene).
SQLite kuupäevade ja kellaaegade salvestamine:
SQLite'is saate kuupäeva või kuupäeva deklareerida, kasutades ühte järgmistest andmetüüpidest:
- KUUPÄEV
- KUUPÄEV KELLAAEG
- AJAMÄNG
- AEG
Pange tähele, et SQLite'is pole eraldi DATE või DATETIME salvestusklassis. Selle asemel salvestatakse kõik eelmise andmetüübiga deklareeritud väärtused salvestusklassi sõltuvalt sisestatud väärtuse kuupäevavormingust järgmiselt:
- TEXT - kui sisestasite kuupäeva väärtuse stringi ISO8601 vormingus ("AAAA-KK-PP HH: KM: SS.SSS").
- PÄRIS - kui sisestate kuupäevaväärtuse Juliuse päevanumbritesse, siis päevade arv pärast 24. novembri 4714 eKr Greenwichi keskpäeva. Seejärel salvestatakse kuupäeva väärtus PÄRIS.
- INTEGER kui Unix Time, sekundite arv alates 1970-01-01 00:00:00 UTC.
Kokkuvõte:
SQLite toetab laias valikus andmetüüpe. Samas on see andmetüüpide osas väga paindlik. Võite sisestada mis tahes andmetüüpi mis tahes väärtuse tüübi. SQLite tutvustas erinevalt teistest andmebaaside haldussüsteemidest ka mõningaid uusi mõisteid andmetüüpides, näiteks tüübi afiinsus ja salvestusklassid.