Vrste podataka u SQLiteu razlikuju se u usporedbi s drugim sustavima za upravljanje bazama podataka. U SQLiteu možete normalno deklarirati tipove podataka, ali svejedno možete pohraniti bilo koju vrijednost u bilo koji tip podataka.
U ovom vodiču naučit ćete-
- Klase skladištenja
- Tip afiniteta
- Primjeri spremanja vrsta podataka u SQLite
SQLite se manje upisuje. Ne postoje vrste podataka, možete pohraniti bilo koju vrstu podataka u bilo koji stupac. To se naziva dinamičkim tipovima.
U statičke tipove, kao u drugim sustavima za upravljanje bazom podataka, ako ste stupac deklarirali s cijelim brojem tipa podataka, možete umetnuti samo vrijednosti cjelobrojnog tipa podataka. Međutim, u dinamičkim tipovima poput SQLitea, vrsta stupca određuje se umetnutom vrijednošću. A onda SQLite pohranjuje tu vrijednost ovisno o svojoj vrsti.
Klase SQLite pohrane
U SQLiteu postoje različite metode pohrane, ovisno o vrsti vrijednosti, te različite metode pohrane nazivaju se klasama pohrane u SQLiteu.
Slijede klase pohrane dostupne u SQLiteu:
- NULL - ova klasa pohrane koristi se za pohranu bilo koje NULL vrijednosti.
- INTEGER - bilo koja numerička vrijednost pohranjuje se kao potpisana cijela vrijednost (može sadržavati i pozitivne i negativne cjelobrojne vrijednosti). Vrijednosti INTEGER u SQLiteu pohranjuju se u 1, 2, 3, 4, 6 ili 8 bajtova memorije, ovisno o vrijednosti broja.
- REAL - ova klasa pohrane koristi se za pohranu vrijednosti s pomičnim zarezom i pohranjuju se u 8 bajtova memorije.
- TEKST - pohranjuje tekstualne nizove. Također podržava različito kodiranje poput UTF-8, UTF-16 BE ili UTF-26LE.
- BLOB - koristi se za pohranu velikih datoteka, poput slika ili tekstualnih datoteka. Vrijednost se pohranjuje kao bajtni niz isto što i ulazna vrijednost.
SQLite Affinity Type
Afinitet tipa preporučena je vrsta podataka pohranjenih u stupcu. Međutim, i dalje možete pohraniti bilo koju vrstu podataka po želji, preporuča se da ove vrste nisu potrebne.
Ti su tipovi uvedeni u SQLite kako bi se povećala kompatibilnost između SQLitea i drugog sustava za upravljanje bazama podataka.
Bilo kojem stupcu deklariranom u bazi podataka SQLite dodjeljuje se afinitet tipa, ovisno o deklariranom tipu podataka. Evo povećanja afiniteta tipa u SQLiteu:
- TEKST.
- NUMERIČKI.
- CIJELI.
- STVARAN.
- BLOB.
Evo kako SQLite određuje afinitet stupca iz njegove deklarirane vrste podataka:
- Afinitet INTEGER dodjeljuje se ako deklarirani tip sadrži niz " INT ".
- Dodijeljen je afinitet TEXT-a ako stupac na svom tipu podataka sadrži jedan od sljedećih nizova " TEXT ", " CHAR ili" CLOB ". Na primjer, tipu VARCHAR dodijelit će se afinitet TEXT-a.
- Afinitet BLOB-a dodjeljuje se ako stupac nema navedenu vrstu ili je vrsta podataka BLOB.
- REAL affinity dodjeljuje se ako vrsta sadrži jedan od sljedećih nizova " DOUB ", " REAL ili" FLOAT ".
- NUMERIČKI afinitet dodjeljuje se za bilo koju drugu vrstu podataka.
Na istoj stranici nalazi se i tablica koja prikazuje neke primjere za mapiranje između SQLite tipova podataka i njihovih afiniteta utvrđenih ovim pravilima:
Primjeri pohrane vrsta podataka u SQLite:
Pohranjivanje broja sa SQLite cijelim brojem:
Bilo koji stupac tipa podataka sadrži riječ "INT", dodijelit će mu se afinitet tipa INTEGER. Pohranit će se u klasi pohrane INTEGER.
Svi sljedeći tipovi podataka dodijeljeni su kao afinitet tipa INTEGER:
- INT, INTEGER, VELIKI.
- INT2, INT4, INT8.
- TINYINT, SMALLINT, SREDNJI INT.
Afinitet tipa INTEGER u SQLiteu može sadržavati bilo koji dodijeljeni cjelobrojni broj (pozitivan ili negativan) od 1 do 8 bajtova.
Pohranjivanje brojeva s SQLite REAL:
STVARNI brojevi su brojevi s dvostrukom preciznošću s pomičnim zarezom. SQLite je pohranio stvarne brojeve kao niz od 8 bajtova. Evo popisa vrsta podataka u SQLiteu koje možete koristiti za spremanje STVARNIH brojeva:
- STVARAN.
- DVOSTRUKO.
- DUPLA PRECIZNOST.
- PLUTATI.
Pohranjivanje velikih podataka pomoću SQLite BLOB:
Postoji samo jedan način za pohranu velikih datoteka u bazu podataka SQLite, a koristi se tip podataka BLOB. Ova vrsta podataka koristi se za pohranu velikih datoteka poput slika, datoteka (bilo koje vrste) itd. Datoteka se pretvara u niz bajtova, a zatim sprema u istoj veličini kao i ulazna datoteka.
Pohranjivanje SQLite logičkih vrijednosti:
SQLite nema zasebnu klasu spremišta BOOLEAN. Međutim, vrijednosti BOOLEAN pohranjuju se kao INTEGERS s vrijednostima 0 (kao false) ili 1 (kao true).
Pohranjivanje SQLite datuma i vremena:
U SQLiteu možete deklarirati datum ili vrijeme koristeći jedan od sljedećih tipova podataka:
- DATUM
- DATUM VRIJEME
- VREMENSKI KAMP
- VRIJEME
Imajte na umu da u SQLiteu ne postoji zasebna DATE ili DATETIME klasa za pohranu. Umjesto toga, sve vrijednosti deklarirane s jednim od prethodnih tipova podataka pohranjuju se u klasi pohrane, ovisno o formatu datuma umetnute vrijednosti, kako slijedi:
- TEKST - ako ste vrijednost datuma umetnuli u format niza ISO8601 ("GGGG-MM-DD HH: MM: SS.SSS").
- STVARNO - ako ste datumsku vrijednost umetnuli u julijanske brojeve dana, broj dana od podneva u Greenwichu 24. studenoga 4714. pne. Tada bi datumska vrijednost bila spremljena kao STVARNA.
- INTEGER kao Unix vrijeme, broj sekundi od 1970-01-01 00:00:00 UTC.
Sažetak:
SQLite podržava širok raspon tipova podataka. Ali, istodobno je vrlo fleksibilan u pogledu tipova podataka. U bilo koju vrstu podataka možete staviti bilo koju vrstu vrijednosti. SQLite je također predstavio neke nove koncepte u vrstama podataka poput afiniteta tipova i klasa pohrane, za razliku od ostalih sustava za upravljanje bazama podataka.