SQLite Adattípusok: Egész szám, szöveg, numerikus, valós szám, Blob

⚡ Okos összefoglaló

SQLite Az adattípusok másképp működnek, mint más adatbázisok, mert SQLite dinamikus ty-t használping, tetszőleges értéket tárolhat bármely oszlopban. A tárolási osztályok, a típusaffinitás és a deklarált típusnevek együttesen határozzák meg, hogy az egyes értékek fizikailag hogyan kerülnek mentésre a lemezen.

  • 🧩 Dinamikus típusping: SQLite dinamikusan típusos, így a beírt érték, nem pedig az oszlopdefiníció határozza meg az adatok tárolási módját.
  • 🗄️ Tárolási osztályok: Öt tárolási osztály – NULL, INTEGER, REAL, TEXT és BLOB – írja le, hogyan tárolódnak az egyes értékek a lemezen.
  • 🎯 Típus affinitás: Minden oszlop egy ajánlott affinitást kap – TEXT, NUMERIC, INTEGER, REAL vagy BLOB – a deklarált típusnevéből.
  • 🔢 Számtárolás: Bármely deklarált típus, amely INT karakterláncot tartalmaz, INTEGER típussá válik, míg a REAL, DOUBLE és FLOAT típus lebegőpontos számokat tartalmaz nyolc bájton.
  • 📅 Dátumok és logikai értékek: SQLite nincs dedikált DATE vagy BOOLEAN osztálya, és ezeket az értékeket TEXT, REAL vagy INTEGER formátumban tárolja.
  • 🤖 AI segítség: A mesterséges intelligenciával működő szöveg-SQL asszisztensek és a GitHub Copilot generálnak SQLite oszlopdefiníciók és adattípusok kiválasztása egyszerű angol nyelven.

SQLite Adattípusok

Az alábbi szakaszok elmagyarázzák, hogyan SQLite kezeli az adattípusokat, kezdve az öt tárolási osztállyal, majd típusaffinitással és annak hozzárendelési szabályaival, végül pedig egész számok, valós számok, BLOB-ok, logikai értékek és dátumok tárolására vonatkozó példákkal foglalkozik.

Adattípusok be SQLite különböznek más adatbázis-kezelő rendszerekben találhatóaktól. SQLite, az adattípusokat a szokásos módon deklarálhatod, de bármilyen értéket továbbra is tárolhatsz bármilyen adattípusban.

SQLite típus nélküli. Nincsenek fix adattípusok; bármilyen típusú adatot tárolhatsz bármelyik oszlopban. Ezt dinamikus típusnak nevezzük.ping.

Statikus típusokban, akárcsak más adatbázis-kezelő rendszerekben, ha egy egész szám adattípusú oszlopot deklarálunk, akkor csak egész szám adattípusú értékeket szúrhatunk be. Dinamikus típusokban azonban, mint például a SQLite, az oszlop típusát a beszúrt érték határozza meg, majd SQLite típusától függően tárolja ezt az értéket.

SQLite Tárolási osztályok

In SQLite Az érték típusától függően különböző tárolási módszerek léteznek; ezeket a különböző tárolási módszereket tárolási osztályoknak nevezzük SQLite.

A következő tárolási osztályok érhetők el SQLite:

  • NULL – ez a tárolási osztály bármilyen NULL érték tárolására szolgál.
  • EGÉSZ SZÁM – bármely numerikus érték előjeles egész számként tárolódik (pozitív és negatív egész értékeket is tartalmazhat). Az INTEGER értékek SQLite a szám értékétől függően 1, 2, 3, 4, 6 vagy 8 bájtos tárolóban vannak tárolva.
  • IGAZI – ez a tárolási osztály a lebegőpontos értékek tárolására szolgál, és 8 bájtos tárhelyen tárolódnak.
  • TEXT – szöveges karakterláncokat tárol. Különböző kódolásokat is támogat, például UTF-8, UTF-16BE vagy UTF-16LE.
  • FOLT – nagy fájlok, például képek vagy szövegfájlok tárolására szolgál. Az érték bájttömbként tárolódik, ugyanúgy, mint a bemeneti érték.

SQLite Affinitás típusa

Az oszlopokban tárolt adatok ajánlott típusa affinitás. Azonban továbbra is bármilyen típusú adatot tárolhat; ezek a típusok ajánlottak, de nem kötelezőek.

Ezeket a típusokat ben vezették be SQLite közötti kompatibilitás maximalizálása érdekében SQLite és egyéb adatbázis kezelő rendszers.

Az an-ban deklarált bármely oszlop SQLite az adatbázishoz a deklarált adattípustól függően típusaffinitást rendelnek. Itt található a típusaffinitások listája a következőben: SQLite:

  • SZÖVEG.
  • SZÁM.
  • EGÉSZ SZÁM.
  • IGAZI.
  • FOLT.

Itt van, hogyan SQLite egy oszlop affinitását a deklarált adattípusa alapján határozza meg:

  • INTEGER affinitás akkor van hozzárendelve, ha a deklarált típus tartalmazza a húr „INT”.
  • A TEXT affinitás akkor kerül hozzárendelésre, ha az oszlop adattípusa a következő karakterláncok egyikét tartalmazza: „TEXT”, „CHAR” vagy „CLOB”. Például a VARCHAR típushoz TEXT affinitás lesz hozzárendelve.
  • A BLOB-affinitás akkor van hozzárendelve, ha az oszlopnak nincs megadva típusa, vagy az adattípus BLOB.
  • A REAL affinitás akkor kerül hozzárendelésre, ha a típus a következő karakterláncok egyikét tartalmazza: „DOUB”, „REAL” vagy „FLOAT”.
  • Minden más adattípushoz NUMERIC affinitás van hozzárendelve.

Az alábbi táblázat néhány térképpéldát is mutat.ping között SQLite az alábbi szabályok által meghatározott adattípusok és rokonságuk:

Térképping között SQLite deklarált adattípusok és a hozzájuk rendelt típusaffinitások, INT, CHAR, TEXT, BLOB, REAL, FLOAT és NUMERIC példákkal

Példák az adattípusok tárolására SQLite

Számok tárolása a SQLite EGÉSZ SZÁM

Ha bármely oszlop adattípusa tartalmazza az „INT” szót, akkor INTEGER típusú affinitást kap. Egy INTEGER tárolási osztályban lesz tárolva.

Az alábbi adattípusok mindegyike INTEGER típusú affinitást kap:

  • INT, INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • APRÓ, KICSI, KÖZEPES.

INTEGER típusú affinitás be SQLite 1 bájttól maximum 8 bájtig bármilyen hozzárendelt egész számot (pozitív vagy negatív) tárolhat.

Számok tárolása a SQLite IGAZI

A VALÓS számok dupla lebegőpontos pontosságú számok. SQLite a valós számokat 8 bájtos tömbként tárolja. Itt található az adattípusok listája SQLite amelyeket VALÓDI számok tárolására használhat:

  • IGAZI.
  • KETTŐS.
  • KETTŐS PONTOSSÁG.
  • ÚSZÓ.

Nagy adatok tárolása a SQLite FOLT

Csak egyféleképpen lehet nagy fájlokat tárolni SQLite adatbázis, és ez a BLOB adattípust használja. Ezt az adattípust nagy fájlok, például képek vagy bármilyen típusú fájlok tárolására használják. A fájlt bájttömbké alakítja, majd a bemeneti fájl méretével megegyező méretben tárolja.

Tárolása SQLite Logikai adattípus

SQLite nincs külön BOOLEAN tárolási osztállyal. Ehelyett a BOOLEAN értékek EGÉSZ SZÁMOKként tárolódnak, ahol a 0 a hamis, az 1 pedig az igaz értéket jelöli.

Tárolása SQLite dátumok és időpontok

Dátumokat vagy dátum-időpontokat deklarálhatsz a SQLite az alábbi adattípusok egyikével:

  • DÁTUM
  • DÁTUM IDŐ
  • IDŐBÉLYEG
  • IDŐ

Vegye figyelembe, hogy nincs külön DATE vagy DATETIME tárolási osztály a SQLiteEhelyett az előző adattípusok valamelyikével deklarált értékek a beszúrt érték dátumformátumától függő tárolási osztályban tárolódnak, az alábbiak szerint:

  • TEXT – ha a dátumértéket ISO8601 karakterlánc formátumban adja meg („ÉÉÉÉ-HH-NN ÓÓ:PP:MM.MMMM”).
  • IGAZI – ha a dátumértéket Julián-napként adja meg, akkor a greenwichi dél óta eltelt napok száma Kr. e. 4714. november 24-én. A dátumérték ezután VALÓS számként lesz tárolva.
  • EGÉSZ SZÁM – mint Unix Idő, a másodpercek száma 1970-01-01 00:00:00 UTC óta.

GYIK

Egy tárolási osztály az, hogyan SQLite fizikailag egy értéket tárol: NULL, INTEGER, REAL, TEXT vagy BLOB, amelyet futásidejű értékként határoznak meg. A típusaffinitás az az osztály, amelyet az oszlop preferál, és amelyet a deklarált típusnevéből választanak ki, ami SQLite próbál pályázni.

Nem. SQLite figyelmen kívül hagyja a zárójelben lévő számot, így a VARCHAR(50) és a VARCHAR azonosan viselkednek. Mindkettő TEXT affinitást kap, mivel a típusnév CHAR-t tartalmaz, és SQLite nincs hosszkorlátozás, kivéve a globális SQLITE_MAX_LENGTH értéket.

Használd a typeof() függvényt egy lekérdezésben, például a SELECT typeof(oszlop) FROM table paranccsal. Ez a függvény az érték valós tárolási osztályát adja vissza – null, integer, real, text vagy blob –, amely eltérhet az oszlop deklarált típusától a dinamikus ty miatt.ping.

STRICT táblák, hozzáadva SQLite 3.37-es verzióban kapcsolja ki a típusaffinitást, és utasítson el minden olyan értéket, amely nem egyezik meg az oszlop deklarált típusával. Csak az INT, INTEGER, REAL, TEXT, BLOB és ANY megengedett, ami merev ty értéket ad.ping más adatbázisokban is megtalálható.

A pénzt EGÉSZ számként tárolja a legkisebb mértékegységben, például centben, hogy elkerülje a REAL lebegőpontos értékek kerekítési hibáit. Változó vagy nagyon nagy pontosság esetén a TEXT megőrzi a pontos számkarakterláncot. SQLite nincs dedikált fixpontos pénztípusa.

Az SQLITE_MAX_LENGTH beállítás korlátozza a TEXT vagy BLOB értékeket, és alapértelmezés szerint egymilliárd bájtban van beállítva. A jelenlegi implementáció maximum 2 147 483 647 bájtot támogat. Szükség esetén futásidőben csökkenthető a korlát az sqlite3_limit() interfésszel.

Igen. A mesterséges intelligencia által fejlesztett szöveg-SQL asszisztensek egyszerű angol leírásokat alakítanak át CREATE TABLE utasításokká, a következők kiválasztásával: SQLite tárolási osztályok és affinitások, mint például INTEGER, TEXT és REAL. A meglévő oszloptípusok megadása javítja a pontosságot, és a generált SQL-t futtatás előtt ellenőrizni kell.

Igen. GitHub másodpilóta oszlopdefiníciókat javasol a következővel: SQLite olyan típusok, mint az INTEGER, TEXT, REAL és BLOB beágyazva a szerkesztőkbe, mint például VS CodeBeolvassa a környező sémát és migrációs kódot, így a kiegészítései újra felhasználják a valódi tábla- és oszlopneveket.

Foglald össze ezt a bejegyzést a következőképpen: