SQLite Tipuri de date: Int, Text, Numeric, Real, Blob

โšก Rezumat inteligent

SQLite Tipurile de date funcศ›ioneazฤƒ diferit faศ›ฤƒ de alte baze de date deoarece SQLite foloseศ™te ty dinamicping, stocรขnd orice valoare รฎn orice coloanฤƒ. Clasele de stocare, afinitatea de tip ศ™i numele de tip declarate determinฤƒ รฎmpreunฤƒ modul รฎn care fiecare valoare este salvatฤƒ fizic pe disc.

  • ๐Ÿงฉ Ty dinamicping: SQLite este tipizatฤƒ dinamic, deci valoarea inseratฤƒ, nu definiศ›ia coloanei, decide modul รฎn care sunt stocate datele.
  • ๐Ÿ—„๏ธ Clase de stocare: Cinci clase de stocare โ€” NULL, INTEGER, REAL, TEXT ศ™i BLOB โ€” descriu modul รฎn care fiecare valoare este pฤƒstratฤƒ pe disc.
  • ๐ŸŽฏ Afinitate de tip: Fiecare coloanฤƒ primeศ™te o afinitate recomandatฤƒ โ€” TEXT, NUMERIC, INTEGER, REAL sau BLOB โ€” de la numele tipului sฤƒu declarat.
  • ๐Ÿ”ข Stocare numere: Orice tip declarat care conศ›ine INT devine INTEGER, รฎn timp ce REAL, DOUBLE ศ™i FLOAT conศ›in numere รฎn virgulฤƒ mobilฤƒ pe opt octeศ›i.
  • ๐Ÿ“… Date ศ™i valori booleene: SQLite nu are o clasฤƒ DATE sau BOOLEAN dedicatฤƒ ศ™i stocheazฤƒ aceste valori ca TEXT, REAL sau INTEGER.
  • ๐Ÿค– Asistenศ›ฤƒ AI: Asistenศ›ii text-SQL cu inteligenศ›ฤƒ artificialฤƒ ศ™i GitHub Copilot genereazฤƒ SQLite definiศ›ii ale coloanelor ศ™i alegeศ›i tipuri de date din limbajul simplu.

SQLite Tipuri de date

Secศ›iunile de mai jos explicฤƒ cum SQLite gestioneazฤƒ tipurile de date, รฎncepรขnd cu cele cinci clase de stocare, apoi afinitatea tipului ศ™i regulile sale de atribuire ศ™i, รฎn final, exemple lucrate de stocare a numerelor รฎntregi, a numerelor reale, a BLOB-urilor, a valorilor booleene ศ™i a datelor.

Tipuri de date รฎn SQLite diferฤƒ de cele din alte sisteme de gestionare a bazelor de date. รŽn SQLite, puteศ›i declara tipuri de date รฎn mod normal, dar puteศ›i stoca รฎn continuare orice valoare รฎn orice tip de date.

SQLite este fฤƒrฤƒ tip. Nu existฤƒ tipuri de date fixe; puteศ›i stoca orice tip de date doriศ›i รฎn orice coloanฤƒ. Aceasta se numeศ™te tip dinamicping.

รŽn tipurile statice, ca ศ™i รฎn alte sisteme de gestionare a bazelor de date, dacฤƒ declaraศ›i o coloanฤƒ cu tipul de date integer, puteศ›i insera doar valori de tipul de date integer. Totuศ™i, รฎn tipurile dinamice, ca รฎn SQLite, tipul coloanei este determinat de valoarea introdusฤƒ, apoi SQLite stocheazฤƒ acea valoare รฎn funcศ›ie de tipul acesteia.

SQLite Clasele de depozitare

In SQLite Existฤƒ diferite metode de stocare รฎn funcศ›ie de tipul valorii; aceste metode diferite de stocare se numesc clase de stocare รฎn SQLite.

Urmฤƒtoarele sunt clasele de stocare disponibile รฎn SQLite:

  • NULL โ€“ aceastฤƒ clasฤƒ de stocare este folositฤƒ pentru a stoca orice valoare NULL.
  • INTEGER โ€“ orice valoare numericฤƒ este stocatฤƒ ca valoare รฎntreagฤƒ cu semn (poate conศ›ine atรขt valori รฎntregi pozitive, cรขt ศ™i negative). Valorile รฎntregi din SQLite sunt stocaศ›i fie รฎn 1, 2, 3, 4, 6 sau 8 octeศ›i de stocare, รฎn funcศ›ie de valoarea numฤƒrului.
  • REAL โ€“ aceastฤƒ clasฤƒ de stocare este utilizatฤƒ pentru a stoca valorile รฎn virgulฤƒ mobilฤƒ, iar acestea sunt stocate รฎntr-o capacitate de stocare de 8 octeศ›i.
  • TEXT โ€“ stocheazฤƒ ศ™iruri de text. De asemenea, acceptฤƒ diferite codificฤƒri, cum ar fi UTF-8, UTF-16BE sau UTF-16LE.
  • BLOB โ€“ utilizat pentru stocarea fiศ™ierelor mari, cum ar fi imagini sau fiศ™iere text. Valoarea este stocatฤƒ ca o matrice de octeศ›i, la fel ca valoarea de intrare.

SQLite Tip de afinitate

Afinitatea de tip este tipul de date recomandat pentru stocarea รฎntr-o coloanฤƒ. Cu toate acestea, puteศ›i stoca orice tip de date doriศ›i; aceste tipuri sunt recomandate, nu obligatorii.

Aceste tipuri au fost introduse รฎn SQLite pentru a maximiza compatibilitatea รฎntre SQLite si alte Sistemul de gestionare a bazelor de dates.

Orice coloanฤƒ declaratฤƒ รฎntr-un SQLite Bazei de date i se atribuie o afinitate de tip รฎn funcศ›ie de tipul de date declarat. Iatฤƒ lista afinitฤƒศ›ilor de tip din SQLite:

  • TEXT.
  • NUMERIC.
  • รŽNTREG.
  • REAL.
  • BLOB.

Iatฤƒ cum SQLite determinฤƒ afinitatea unei coloane din tipul de date declarat:

  • Afinitatea INTEGER este atribuitฤƒ dacฤƒ tipul declarat conศ›ine ลŸir โ€žINTโ€.
  • Afinitatea TEXT este atribuitฤƒ dacฤƒ coloana conศ›ine รฎn tipul sฤƒu de date unul dintre urmฤƒtoarele ศ™iruri: โ€žTEXTโ€, โ€žCHARโ€ sau โ€žCLOBโ€. De exemplu, tipului VARCHAR i se va atribui afinitatea TEXT.
  • Afinitatea BLOB este atribuitฤƒ dacฤƒ coloana nu are niciun tip specificat sau tipul de date este un BLOB.
  • Afinitatea REAL este atribuitฤƒ dacฤƒ tipul conศ›ine unul dintre urmฤƒtoarele ศ™iruri de caractere: โ€žDOUBโ€, โ€žREALโ€ sau โ€žFLOATโ€.
  • Afinitatea NUMERIC este atribuitฤƒ oricฤƒrui alt tip de date.

Existฤƒ, de asemenea, un tabel mai jos care prezintฤƒ cรขteva exemple ale hฤƒrศ›iiping รฎntre SQLite tipurile de date ศ™i afinitฤƒศ›ile lor determinate de aceste reguli:

Hartฤƒping รฎntre SQLite tipuri de date declarate ศ™i afinitฤƒศ›ile lor de tip atribuite, prezentรขnd exemple pentru INT, CHAR, TEXT, BLOB, REAL, FLOAT ศ™i NUMERIC

Exemple de stocare a tipurilor de date รฎn SQLite

Stocarea numerelor cu SQLite INTEGER

Dacฤƒ o coloanฤƒ are un tip de date care conศ›ine cuvรขntul โ€žINTโ€, i se va atribui o afinitate de tip INTEGER. Aceasta va fi stocatฤƒ รฎntr-o clasฤƒ de stocare INTEGER.

Tuturor urmฤƒtoarelor tipuri de date li se atribuie o afinitate de tip INTEGER:

  • INT, INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • MICฤ‚ MINIMฤ‚, MICฤ‚ MINIMฤ‚, MEDIE MINIMฤ‚.

afinitate de tip INTEGER รฎn SQLite poate conศ›ine orice numฤƒr รฎntreg atribuit (pozitiv sau negativ) de la 1 octet pรขnฤƒ la maximum 8 octeศ›i.

Stocarea numerelor cu SQLite REAL

Numerele REALE sunt numere cu precizie dublฤƒ รฎn virgulฤƒ mobilฤƒ. SQLite stocheazฤƒ numere reale ca o matrice de 8 octeศ›i. Iatฤƒ lista tipurilor de date din SQLite pe care le puteศ›i folosi pentru a stoca numere REALE:

  • REAL.
  • DUBLA.
  • DUBLA PRECIZIUNE.
  • PLUTI.

Stocarea datelor mari cu SQLite BLOB

Existฤƒ o singurฤƒ modalitate de a stoca fiศ™iere mari รฎntr-un SQLite baza de date, ศ™i care utilizeazฤƒ tipul de date BLOB. Acest tip de date este utilizat pentru a stoca fiศ™iere mari, cum ar fi imagini sau fiศ™iere de orice tip. Fiศ™ierul este convertit รฎntr-o matrice de octeศ›i ศ™i apoi stocat la aceeaศ™i dimensiune ca ศ™i fiศ™ierul de intrare.

depozitarea SQLite booleane

SQLite nu are o clasฤƒ de stocare BOOLEAN separatฤƒ. รŽn schimb, valorile BOOLEAN sunt stocate ca INTEGERI, unde 0 reprezintฤƒ fals ศ™i 1 reprezintฤƒ adevฤƒrat.

depozitarea SQLite date si ore

Puteศ›i declara date sau date-ore รฎn SQLite folosind unul dintre urmฤƒtoarele tipuri de date:

  • DATA
  • datetime
  • TIMESTAMP-UL
  • TIMP

Reศ›ineศ›i cฤƒ nu existฤƒ o clasฤƒ de stocare DATE sau DATETIME separatฤƒ รฎn SQLiteรŽn schimb, orice valori declarate cu unul dintre tipurile de date anterioare sunt stocate รฎntr-o clasฤƒ de stocare, รฎn funcศ›ie de formatul de datฤƒ al valorii inserate, dupฤƒ cum urmeazฤƒ:

  • TEXT โ€“ dacฤƒ introduceศ›i valoarea datei รฎn formatul unui ศ™ir ISO8601 (โ€žAAAA-LL-ZZ HH:MM:SS.SSSโ€).
  • REAL โ€“ dacฤƒ introduceศ›i valoarea datei ca numฤƒr de zi julian, numฤƒrul de zile de la prรขnz รฎn Greenwich, pe 24 noiembrie 4714 รฎ.Hr. Valoarea datei este apoi stocatฤƒ ca REAL.
  • INTEGER - la fel de Unix Timp, numฤƒrul de secunde de la 1970-01-01 00:00:00 UTC.

รŽntrebฤƒri frecvente

O clasฤƒ de stocare este modul รฎn care SQLite stocheazฤƒ fizic o valoare: NULL, INTEGER, REAL, TEXT sau BLOB, decisฤƒ per valoare la momentul execuศ›iei. Afinitatea de tip este clasa preferatฤƒ de o coloanฤƒ, aleasฤƒ din numele tipului declarat, care SQLite รฎncearcฤƒ sฤƒ aplice.

Nu. SQLite ignorฤƒ numฤƒrul din paranteze, deci VARCHAR(50) ศ™i VARCHAR se comportฤƒ identic. Ambele primesc afinitate TEXT deoarece numele tipului conศ›ine CHAR ศ™i SQLite nu impune nicio limitฤƒ de lungime cu excepศ›ia valorii globale SQLITE_MAX_LENGTH.

Foloseศ™te funcศ›ia typeof() รฎntr-o interogare, cum ar fi SELECT typeof(column) FROM table. Aceasta returneazฤƒ clasa de stocare realฤƒ a valorii โ€” null, integer, real, text sau blob โ€” care poate diferi de tipul declarat al coloanei din cauza tipului dinamic.ping.

Tabele STRICT, adฤƒugate รฎn SQLite 3.37, dezactivaศ›i afinitatea de tip ศ™i respingeศ›i orice valoare care nu corespunde tipului declarat al unei coloane. Sunt permise doar INT, INTEGER, REAL, TEXT, BLOB ศ™i ANY, oferind tipul rigidping gฤƒsite รฎn alte baze de date.

Stocaศ›i banii ca numฤƒr รฎntreg รฎn cea mai micฤƒ unitate, cum ar fi cenศ›ii, pentru a evita erorile de rotunjire ale valorilor REAL รฎn virgulฤƒ mobilฤƒ. Pentru variabile sau precizie foarte mare, TEXT pฤƒstreazฤƒ ศ™irul numeric exact. SQLite nu are un tip de monedฤƒ cu punct fix dedicat.

Setarea SQLITE_MAX_LENGTH limiteazฤƒ o valoare TEXT sau BLOB ศ™i este setatฤƒ implicit la un miliard de octeศ›i. Implementarea actualฤƒ acceptฤƒ pรขnฤƒ la 2,147,483,647 de octeศ›i. Puteศ›i reduce limita รฎn timpul execuศ›iei cu interfaศ›a sqlite3_limit() atunci cรขnd este necesar.

Da. Asistenศ›ii text-SQL cu inteligenศ›ฤƒ artificialฤƒ transformฤƒ o descriere รฎn limba englezฤƒ simplฤƒ รฎn instrucศ›iuni CREATE TABLE, alegรขnd SQLite clase de stocare ศ™i afinitฤƒศ›i precum INTEGER, TEXT ศ™i REAL. Furnizarea tipurilor de coloane existente รฎmbunฤƒtฤƒศ›eศ™te precizia, iar codul SQL generat ar trebui revizuit รฎnainte de rulare.

Da. Copilotul GitHub sugereazฤƒ definiศ›ii de coloane cu SQLite tipuri precum INTEGER, TEXT, REAL ศ™i BLOB รฎn linie รฎn editori precum VS CodeCiteศ™te schema ศ™i codul de migrare รฎnconjurฤƒtoare, astfel รฎncรขt completฤƒrile sale reutilizeazฤƒ numele reale ale tabelelor ศ™i coloanelor.

Rezumaศ›i aceastฤƒ postare cu: