SQLite Tietotyypit: Kokonaisluku, Teksti, Numeerinen, Reaaliluku, Blob

⚡ Älykäs yhteenveto

SQLite tietotyypit toimivat eri tavalla kuin muut tietokannat, koska SQLite käyttää dynaamista ty:täping, tallentamalla minkä tahansa arvon mihin tahansa sarakkeeseen. Tallennusluokat, tyyppiaffiniteetti ja ilmoitetut tyyppinimet yhdessä määrittävät, miten kukin arvo fyysisesti tallennetaan levylle.

  • 🧩 Dynaaminen tyyppiping: SQLite tyypitetään dynaamisesti, joten syöttämäsi arvo, ei sarakemääritelmä, määrää, miten tiedot tallennetaan.
  • 🗄️ Säilytysluokat: Viisi tallennusluokkaa – NULL, INTEGER, REAL, TEXT ja BLOB – kuvaavat, miten kutakin arvoa säilytetään levyllä.
  • 🎯 Tyypin affiniteetti: Jokainen sarake saa suositellun affiniteetin — TEXT, NUMERIC, INTEGER, REAL tai BLOB — ilmoitetun tyyppinimensä perusteella.
  • 🔢 Numeroiden tallennus: Mikä tahansa ilmoitetusta tyypistä, joka sisältää INT-merkin, tulee INTEGER, kun taas REAL, DOUBLE ja FLOAT sisältävät liukulukuja kahdeksassa tavussa.
  • 📅 Päivämäärät ja totuusarvot: SQLite sillä ei ole erillistä DATE- tai BOOLEAN-luokkaa, ja se tallentaa kyseiset arvot muodossa TEXT, REAL tai INTEGER.
  • 🤖 AI-apu: Tekoälyiset tekstistä SQL:ään -avustajat ja GitHub Copilot luovat SQLite sarakemääritelmät ja valitse tietotyypit selkokielestä.

SQLite Tietotyypit

Alla olevat osiot selittävät, miten SQLite käsittelee tietotyyppejä alkaen viidestä tallennusluokasta, sitten tyyppiaffiniteetista ja sen määrityssäännöistä ja lopuksi työstää esimerkkejä kokonaislukujen, reaalilukujen, BLOB-objektien, totuusarvojen ja päivämäärien tallentamisesta.

Tietotyypit sisään SQLite eroavat muiden tietokannan hallintajärjestelmien vastaavista. SQLite, voit määrittää tietotyyppejä normaalisti, mutta voit silti tallentaa minkä tahansa arvon mihin tahansa tietotyyppiin.

SQLite on tyypitön. Ei ole olemassa kiinteitä tietotyyppejä; voit tallentaa minkä tahansa tyyppistä tietoa mihin tahansa sarakkeeseen. Tätä kutsutaan dynaamiseksi ty:ksi.ping.

Staattisissa tyypeissä, kuten muissakin tietokannan hallintajärjestelmissä, jos määrittelet sarakkeen, jonka tietotyyppi on kokonaisluku, voit lisätä vain kokonaislukutietotyypin arvoja. Dynaamisissa tyypeissä, kuten SQLite, sarakkeen tyyppi määräytyy lisätyn arvon perusteella, ja sitten SQLite tallentaa tämän arvon tyypistä riippuen.

SQLite Varastointiluokat

In SQLite Arvon tyypistä riippuen on olemassa erilaisia ​​tallennusmenetelmiä; näitä erilaisia ​​tallennusmenetelmiä kutsutaan tallennusluokiksi SQLite.

Seuraavat ovat käytettävissä olevat säilytysluokat SQLite:

  • NULL – tätä tallennusluokkaa käytetään minkä tahansa NULL-arvon tallentamiseen.
  • KOKONAISLUKU – mikä tahansa numeerinen arvo tallennetaan etumerkillisenä kokonaislukuarvona (se voi sisältää sekä positiivisia että negatiivisia kokonaislukuarvoja). INTEGER-arvot SQLite tallennetaan joko 1, 2, 3, 4, 6 tai 8 tavun muistiin numeron arvosta riippuen.
  • TODELLINEN – tätä tallennusluokkaa käytetään liukulukujen arvojen tallentamiseen, ja ne tallennetaan 8 tavun tallennustilaan.
  • TEKSTI – tallentaa tekstimerkkijonoja. Se tukee myös erilaisia ​​koodauksia, kuten UTF-8, UTF-16BE tai UTF-16LE.
  • BLOB – käytetään suurten tiedostojen, kuten kuvien tai tekstitiedostojen, tallentamiseen. Arvo tallennetaan tavutaulukkona, sama kuin syötearvo.

SQLite Suhdetyyppi

Tyyppiaffiniteetti on sarakkeeseen tallennettavan datan suositeltu tyyppi. Voit kuitenkin tallentaa minkä tahansa tyyppistä dataa haluamallasi tavalla; nämä tyypit ovat suositeltuja, eivät pakollisia.

Nämä tyypit otettiin käyttöön vuonna SQLite maksimoidaksesi yhteensopivuuden SQLite ja muut tietokannan ohjausjärjestelmäs.

Mikä tahansa sarake, joka on ilmoitettu an SQLite tietokannalle määritetään tyyppiaffiniteetti sen ilmoitetun tietotyypin mukaan. Tässä on luettelo tyyppiaffiniteeteista SQLite:

  • TEKSTI.
  • NUMERO.
  • KOKONAISLUKU.
  • TODELLINEN.
  • MÖYKKY.

Tässä on miten SQLite määrittää sarakkeen affiniteetin sen ilmoitetusta tietotyypistä:

  • INTEGER-affiniteetti määritetään, jos ilmoitettu tyyppi sisältää jono "SISÄINEN".
  • TEXT-affiniteetti määritetään, jos sarakkeen tietotyypissä on jokin seuraavista merkkijonoista: ”TEXT”, ”CHAR” tai ”CLOB”. Esimerkiksi tyypille VARCHAR määritetään TEXT-affiniteetti.
  • BLOB-affiniteetti määritetään, jos sarakkeelle ei ole määritetty tyyppiä tai tietotyyppi on BLOB.
  • REAL-affiniteetti määritetään, jos tyyppi sisältää jonkin seuraavista merkkijonoista: ”DOUB”, ”REAL” tai ”FLOAT”.
  • NUMERO-affiniteetti on määritetty mille tahansa muulle tietotyypille.

Alla on myös taulukko, jossa on esimerkkejä kartasta.ping välillä SQLite näiden sääntöjen määrittämät tietotyypit ja niiden affiniteetit:

karttaping välillä SQLite ilmoitetut tietotyypit ja niille määritetyt tyyppiaffiniteetit, esimerkkeinä INT, CHAR, TEXT, BLOB, REAL, FLOAT ja NUMERIC

Esimerkkejä tietotyyppien tallentamisesta SQLite

Numeroiden tallentaminen SQLite KOKONAISLUKU

Jos jonkin sarakkeen tietotyyppi sisältää sanan ”INT”, sille määritetään INTEGER-tyyppinen affiniteetti. Se tallennetaan INTEGER-tallennusluokkaan.

Kaikille seuraaville tietotyypeille on määritetty INTEGER-tyyppinen affiniteetti:

  • INT, INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • PIENI, PIENI, KESKIKORTTI.

INTEGER-tyypin affiniteetti sisään SQLite voi sisältää minkä tahansa kokonaisluvun (positiivisen tai negatiivisen) yhdestä tavusta enintään kahdeksaan tavuun.

Numeroiden tallentaminen SQLite TODELLINEN

REAALIluvut ovat lukuja, joiden liukulukutarkkuus on kaksinkertainen. SQLite tallentaa reaaliluvut 8-tavuisena taulukkona. Tässä on luettelo tietotyypeistä SQLite joita voit käyttää todellisten numeroiden tallentamiseen:

  • TODELLINEN.
  • KAKSINKERTAINEN.
  • KAKSI TARKKUUS.
  • KELLUA.

Suurten tietojen tallentaminen SQLite BLOB

Suuria tiedostoja voi tallentaa vain yhdellä tavalla SQLite tietokannassa, ja se käyttää BLOB-tietotyyppiä. Tätä tietotyyppiä käytetään suurten tiedostojen, kuten kuvien tai minkä tahansa tyyppisten tiedostojen, tallentamiseen. Tiedosto muunnetaan tavutaulukoksi ja tallennetaan sitten samassa koossa kuin syöttötiedosto.

Tallentaminen SQLite booleans

SQLite ei ole erillistä BOOLEAN-tallennusluokkaa. Sen sijaan BOOLEAN-arvot tallennetaan KOKONAISLUKUINA, joissa 0 on epätosi ja 1 on tosi.

Tallentaminen SQLite päivämäärät ja kellonajat

Voit ilmoittaa päivämääriä tai päivämäärä-kellonaikoja SQLite käyttämällä jotakin seuraavista tietotyypeistä:

  • DATE
  • TREFFIAIKA
  • AIKALEIMA
  • AIKA

Huomaa, että DATE- tai DATETIME-tallennusluokkaa ei ole erillistä. SQLiteSen sijaan kaikki edellisillä tietotyypeillä ilmoitetut arvot tallennetaan lisätyn arvon päivämäärämuodon mukaiseen tallennusluokkaan seuraavasti:

  • TEKSTI – jos syötät päivämääräarvon ISO8601-merkkijonomuodossa (”VVVV-KK-PP HH:MM:SS.SSS”).
  • TODELLINEN – jos syötät päivämääräarvon juliaanisena päivinä, se on päivien lukumäärä Greenwichin kello 24:stä marraskuuta 4714 eaa. keskipäivästä lähtien. Päivämääräarvo tallennetaan sitten muodossa REAL.
  • KOKONAISLUKU – kuten unix Aika, sekuntien määrä vuodesta 1970-01-01 00:00:00 UTC.

UKK

Tallennusluokka on se, miten SQLite tallentaa fyysisesti arvon: NULL, INTEGER, REAL, TEXT tai BLOB, joka päätetään arvokohtaisesti suorituksen aikana. Tyyppiaffiniteetti on sarakkeen suosima luokka, joka valitaan sen ilmoitetusta tyyppinimestä, joka SQLite yrittää hakea.

Ei. SQLite jättää suluissa olevan numeron huomiotta, joten VARCHAR(50) ja VARCHAR toimivat samalla tavalla. Molemmat saavat TEXT-affiniteetin, koska tyypin nimi sisältää CHAR-merkin, ja SQLite ei aseta pituusrajoitusta lukuun ottamatta globaalia SQLITE_MAX_LENGTH-arvoa.

Käytä typeof()-funktiota kyselyssä, kuten SELECT typeof(column) FROM table. Se palauttaa arvon todellisen tallennusluokan — null, integer, real, text tai blob — joka voi poiketa sarakkeen ilmoitetusta tyypistä dynaamisen ty-arvon vuoksi.ping.

STRICT-taulukot, lisätty SQLite 3.37, poista tyyppiaffiniteetti käytöstä ja hylkää kaikki arvot, jotka eivät vastaa sarakkeen ilmoitettua tyyppiä. Vain INT, INTEGER, REAL, TEXT, BLOB ja ANY ovat sallittuja, mikä antaa jäykän ty-arvon.ping löytyy muista tietokannoista.

Tallenna raha KOKONAISLUKUNA pienimmässä yksikössä, kuten sentteinä, välttääksesi REAL-liukulukuarvojen pyöristysvirheet. Muuttuvien lukujen tai erittäin suuren tarkkuuden yhteydessä TEXT säilyttää tarkan numeromerkkijonon. SQLite ei ole erillistä kiinteän pisteen rahatyyppiä.

SQLITE_MAX_LENGTH-asetus rajoittaa TEXT- tai BLOB-arvon ja on oletusarvoisesti miljardi tavua. Nykyinen toteutus tukee jopa 2 147 483 647 tavua. Voit tarvittaessa pienentää rajaa suorituksen aikana sqlite3_limit()-rajapinnalla.

Kyllä. Tekoälyn tekstistä SQL:ksi -avustajat muuttavat selkokielisen kuvauksen CREATE TABLE -lausekkeiksi valitsemalla SQLite tallennusluokat ja affiniteetit, kuten INTEGER, TEXT ja REAL. Olemassa olevien saraketyyppien syöttäminen parantaa tarkkuutta, ja luotu SQL tulisi tarkistaa ennen suorittamista.

Kyllä. GitHub Copilot ehdottaa sarakemääritelmiä SQLite tyyppejä, kuten INTEGER, TEXT, REAL ja BLOB, editorien tekstissä, kuten VS CodeSe lukee ympäröivän skeeman ja siirtokoodin, joten sen täydennykset käyttävät uudelleen todellisia taulukko- ja sarakenimiäsi.

Tiivistä tämä viesti seuraavasti: