PostgreSQL-tietotyypit: Merkki - Numeerinen - Binaarinen - Boolen

Sisällysluettelo:

Anonim

PostgreSQL tarjoaa monipuolisen natiivitietotyypin käyttäjille. Käyttäjät voivat lisätä uusia tyyppejä CREATE TYPE -komennon avulla. Se tekee kyselyistä myös yksinkertaisempia ja luettavampia.

Tietotyypit PostgreSQL: ssä

PostgreSQL tukee seuraavia tietotyyppejä:

  • Tekstityypit
  • Numerotyypit
  • Päivämäärät ja ajat
  • XML
  • JSON
  • Boolen
  • Bittiä
  • Binaaritiedot
  • Verkko
  • Taulukot
  • Luo tietotyyppi
  • Boolen
  • Ajallinen
  • UUID
  • Taulukko
  • JSON
  • Erityiset tietotyypit verkko-osoitteen ja geometristen tietojen tallentamiseen.

Tutkitaan yksityiskohtaisesti PostgreSQL-tietotyyppejä

  • Merkkitietotyypit
  • Numeeriset tietotyypit
  • Binaaritietotyypit
  • Verkko-osoitetyyppi
  • Tekstihaun tyyppi
  • Päivämäärä / aika-tietotyypit
  • Boolen tyyppi
  • Geometriset tietotyypit
  • Luetellut tyypit
  • Alueen tyyppi
  • UUID-tyyppi
  • XML-tyyppi
  • JSON-tyyppi
  • Pseudotyypit

Merkkitietotyypit

PostgreSQL tukee merkkitietotyyppejä tekstiarvojen tallentamiseen. PostgreSQL rakentaa merkkitietotyypit samoista sisäisistä rakenteista. PostgreSQL tarjoaa kolme merkkitietotyyppiä: CHAR (n), VARCHAR (n) ja TEXT.

Nimi Kuvaus
varchar (n) Antaa sinun ilmoittaa muuttuvan pituuden rajoituksella
Char (n) Kiinteä pituus, tyhjä pehmustettu
Teksti Use voi käyttää tätä tietotyyppiä ilmoittamaan muuttujan, jonka pituus on rajoittamaton

Numeeriset tietotyypit

PostgreSQL tukee kahta erillistä numerotyyppiä:

  • Kokonaisluvut
  • Liukuluvut
Nimi Kaupan koko Alue
pieni 2 tavua -32768 - +32767
kokonaisluku 4 tavua -2147483648 - +2147483647
bigint 8 tavua -9223372036854775808 - 9223372036854775807
desimaali muuttuja Jos ilmoitit sen desimaaliluvuksi, tietotyyppi vaihtelee 131072 numerosta ennen desimaalia 16383 numeroon desimaalin jälkeen
numeerinen muuttuja Jos ilmoitat sen numeroksi, voit lisätä numeron enintään 131072 numeroa ennen desimaalipistettä 16383 numeroon desimaalin jälkeen
todellinen 4 tavua 6 desimaalin tarkkuudella
kaksinkertainen 8 tavua 15 desimaalin tarkkuudella

Binaaritietotyypit

Binaarijono on oktettien tai tavujen sarja. Binaariset Postgres-tietotyypit on jaettu kahdella tavalla.

  • Binaarijonot sallivat arvon nollan kertoimien tallentamisen
  • Tulostamattomat oktetit

Merkkijonot eivät salli nolla oktettia ja estävät myös kaikki muut oktetin arvot ja sekvenssit, jotka ovat virheellisiä tietokannan merkistöjen koodaussääntöjen mukaan.

Nimi Varastokoko Kuvaus
Tavu 1–4 tavua plus binäärimerkkijonon koko Vaihtelevan pituinen binaarijono

Verkko-osoitetyyppi

Monet sovellukset tallentavat verkkotietoja, kuten käyttäjien IP-osoitteet tai

anturit. PostgreSQL: llä on kolme natiivityyppiä, jotka auttavat sinua optimoimaan verkkotiedot.

Nimi Koko Kuvaus
siideri 7 tai 19 tavua IPV4- ja IPv6-verkot
Inet 7 tai 19 tavua IPV4- ja IPV5-isäntä ja -verkot
macaddr 6 tavua MAC-osoitteet

Verkko-osoitetyyppien käyttämisellä on seuraavat edut

  1. Tallennustilan säästö
  2. Syötevirheiden tarkistus
  3. Toiminnot, kuten tietojen haku aliverkon kautta

Tekstihaun tyyppi

PostgreSQL tarjoaa kaksi tietotyyppiä, jotka on suunniteltu tukemaan kokotekstihakua. Kokotekstihaku etsii luonnokielisten asiakirjojen joukosta etsimään niitä, jotka vastaavat kyselyä parhaiten.

  • Tsvector-tekstihaku PostgreSQL-muuttujatyypit edustavat asiakirjaa tekstihakuun optimoidussa muodossa
  • Kyselytyyppinen tekstihaku tallentaa hakusanat, jotka on haettava

Päivämäärä / aika-tietotyypit

PostgreSQL-aikaleima tarjoaa mikrosekunnin tarkkuuden toisen tarkkuuden sijaan. Lisäksi sinulla on mahdollisuus tallentaa myös aikavyöhykkeellä tai ilman. PostgreSQL muuntaa aikaleiman ja aikavyöhykkeen UTC: ksi syötteessä ja tallentaa sen.

Päivämäärä- ja kellonaika syötetään eri muodoissa, mukaan lukien perinteinen Postgres, ISO 8601. SQL-yhteensopiva jne.

PostgreSQL tukee päivä / kuukausi / vuosi -tilausta. Tuetut muodot ovat DMY, MDY, YMD

Ajalliset tietotyypit

Nimi Koko Alue Resoluutio
Aikaleima ilman aikavyöhykettä 8 tavua 4713 eaa. - 294276 jKr 1 mikrosekunnin / 14 numeroa
Aikaleima ja aikavyöhyke 8 tavua 4713 eaa. - 294276 jKr 1 mikrosekunnin / 14 numeroa
Päivämäärä 4 tavua 4713 eaa. - 294276 jKr Yksi päivä
Aika ilman aikavyöhykettä 8 tavua 00:00:00 - 24:00:00 1 mikrosekunnin / 14 numeroa
Aika aikavyöhykkeellä 12 tavua 00:00:00 + 1459 - 24: 00-1459 1 mikrosekunnin / 14 numeroa
Intervalli 12 tavua -178000000 - 178000000 vuotta 1 mikrosekunnin / 14 numeroa

Esimerkkejä:

Tulo Kuvaus
2025-09-07 ISO 8601, 7. syyskuuta millä tahansa päivämäärätyylillä (suositeltu muoto)
7. syyskuuta 2025 7. syyskuuta millä tahansa päivämäärätyylillä
7.9.2015 MDY: llä 7. syyskuuta, DMY: llä 9. heinäkuuta
7.9.25 MDY: n kanssa 7. syyskuuta 2025
2025-syyskuu-7 7. syyskuuta millä tahansa päivämäärätyylillä
7. syyskuuta 2018 7. syyskuuta millä tahansa päivämäärätyylillä
7. syyskuuta-25 7. syyskuuta 2025 YMD: n kanssa
20250907 ISO 8601,7 syyskuu 20225 missä tahansa tilassa
2025.250 vuosi ja vuoden päivä, tässä tapauksessa 7. syyskuuta 2025
J25250 Julian treffi

Aika / aika aikavyöhyketulolla

Tulo Kuvaus
11: 19: 38.507 11:19:38 11:19 111938 ISO 8601
11:19 Sama kuin 11:19
23:19 sama kuin 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, sama kuin 23:19 EST
23:19 EST aikavyöhyke määritetty EST, sama kuin 23:19 EST

Boolen tyyppi

Boolen tietotyyppi voi olla

  • Totta
  • Väärä
  • tyhjä

arvot.

Ilmoitat loogisen tai loogisen avainsanan, kun ilmoitat sarakkeen Boolen-tietotyypillä.

Kun lisäät arvoja loogiseen sarakkeeseen, Postgre muuntaa arvot kuten

  • Joo
  • y
  • 1
  • t
  • totta

osaksi 1.

Vaikka arvot kuten

  • Ei
  • N
  • 0
  • F
  • Väärä

muunnetaan 0: ksi

Dataa valittaessa arvot muunnetaan jälleen takaisin kyllä, tosi, y, jne.

Geometriset tietotyypit

Geometriset tietotyypit edustavat kaksiulotteisia paikkatietokohteita. Ne auttavat suorittamaan toimintoja, kuten kierrot, skaalaus, kääntäminen jne.

Nimi Varastointikoko Edustus Kuvaus
Kohta 16 tavua Osoita tasossa (x, y)
Linja 32 tavua Ääretön linja ((xl.yl). (x2.y2))
Lseg 32 tavua Äärellinen linjasegmentti ((xl.yl). (x2.y2))
Laatikko 32 tavua Suorakulmainen laatikko ((xl.yl). (x2.y2))
Polku 16n + 16n tavua Sulje ja avaa polku ((xl.yl),…)
Monikulmio 40 + 16 n tavua Monikulmio [(xl.yl)….]
Ympyrä 24 tavua Ympyrä <(xy) .r> (keskipiste ja säde)

Luetellut tyypit

Laskettu PostgreSQL-tietotyyppi on hyödyllinen edustamaan harvoin muuttuvia tietoja, kuten maakoodia tai sivuliikkeen tunnusta. Laskettu tietotyyppi on esitetty taulukossa, jossa on vieraita avaimia tietojen eheyden varmistamiseksi.

Esimerkki:

Hiusten väri on melko staattinen väestötietokannassa

CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')

Alueen tyyppi

Monet yrityssovellukset edellyttävät tietoja vaihteluvälillä. Tyypillisesti kaksi saraketta (esimerkki: aloituspäivä, lopetuspäivä) on määritelty alueiden käsittelemiseksi. Tämä on sekä tehotonta että vaikeaa ylläpitää.

Postgre on rakentanut valikoimatyypit seuraavasti

  • int4range - Näytä kokonaislukualue
  • int8range - bigintin näyttöalue
  • numrange - Näyttää numeerisen alueen
  • tstrange - Auttaa näyttämään aikaleiman ilman aikavyöhykettä
  • outo - Voit näyttää aikaleiman aikavyöhykkeellä
  • ajanjakso - päivämääräalue

UUID-tyyppi

Universally Unique Identifier (UUID) on algoritmin tuottama 128-bittinen määrä. On hyvin epätodennäköistä, että toinen henkilö luo saman tunnuksen samalla algoritmilla. Siksi nämä tunnisteet ovat hajautetuille järjestelmille ihanteellinen valinta, koska ne tarjoavat ainutlaatuisuuden yhdessä tietokannassa. UUID kirjoitetaan ryhmänä pieniä kirjaimia heksadesimaalilukuina, ja eri ryhmät erotetaan yhdysmerkillä.

PostgreSQL: llä on natiivi UUID-tietotyyppi, joka vie 16 tavua tallennustilaa ... UUID on ihanteellinen tietotyyppi ensisijaisille avaimille.

Esimerkki:

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre hyväksyy myös UUID-syötteiden vaihtoehtoiset muodot, kuten kaikki isot kirjaimet, ei väliviivoja, aaltosulkeita jne.

XML-tyyppi

PostgreSQL: n avulla voit tallentaa XML-tietoja tietotyyppiin, mutta se ei ole muuta kuin tekstitietotyypin laajennus. Mutta etuna on, että se tarkistaa, että XML-sisääntulo on hyvin muodostettu.

Esimerkki:

XMLPARSE (DOCUMENT 'Data Type')

JSON-tyyppi

JSON-tietojen tallentamiseksi PostgreSQL tarjoaa 2 tietotyyppiä

  1. JSON
  2. JSONB
json Jsonb
Yksinkertainen tekstitietotyypin laajennus JSON-tarkistuksella Binaarinen esitys JSON-tiedoista
Lisää on nopea, mutta tietojen haku suhteellisen hidas. Lisää on hidasta, mutta valitse (tietojen haku on nopeaa)
Tallentaa syötetyt tiedot täsmälleen samalla tavalla kuin tyhjätilat. Tukee indeksointia. Voi optimoida välilyönnin, jotta haku olisi nopeampaa.
Uudelleenkäsittely tietojen hakemisessa Tietojenkäsittelyä ei vaadita tietojen hakemisessa

Yleisimmin käytetty JSON-tietotyyppi käytti meitä jsonb, ellei JSON-tietotyypin käyttämiseen ole erityistä tarvetta.

Esimerkki:

CREATE TABLE employee (id integer NOT NULL,age integer NOT NULL,data jsonb);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}');

Pseudotyypit

PostgreSQL: ssä on monia erikoistarkoituksia, joita kutsutaan pseudotyypeiksi. Et voi käyttää näennäistyyppejä PostgreSQL-saraketyyppeinä. Niitä käytetään ilmoittamaan tai funktion argumentti tai palautustyyppi.

Jokainen käytettävissä olevista pseudotyypeistä on hyödyllinen tilanteissa, joissa toiminnon käyttäytymistä koskevat asiakirjat eivät vastaa yksinkertaisesti tietyn SQL-tietotyypin arvon ottamista tai palauttamista.

Nimi Kuvaus
Minkä tahansa Toiminto hyväksyy kaikki syötetiedot.
Taulukko Toiminto hyväksyy minkä tahansa taulukon tietotyypin.
Mikä tahansa elementti Funktio hyväksyy minkä tahansa tietotyypin.
Mikä tahansa enum Funktio hyväksyy kaikki enum-tietotyypit.
Nonarray Toiminto hyväksyy kaikki ei-matriisitietotyypit.
Cstring Funktio hyväksyy tai palauttaa null-päättyvän C-merkkijonon.
Sisäinen Sisäinen toiminto hyväksyy tai palauttaa sisäisen palvelimen tietotyypin.
Kielen käsittelijä Sen on ilmoitettu palaavan kielenkäsittelijän.
Ennätys Etsi funktio, joka palauttaa määrittelemättömän rivityypin.
Laukaista Liipaisintoimintoa käytetään liipaisun palauttamiseen.

On tärkeää, että tätä toimintoa käyttävän käyttäjän on varmistettava, että toiminto käyttäytyy turvallisesti, kun argumenttityypinä käytetään näennäistyyppiä.

Tietotyyppien käytön parhaat käytännöt

  • Käytä "text" -tietotyyppiä, ellet halua rajoittaa syötettä
  • Älä koskaan käytä "char".
  • Kokonaisluvut käyttävät "int." Käytä bigintia vain, kun sinulla on todella suuria lukuja
  • Käytä "numeerista" melkein aina
  • Käytä float-ohjelmaa PostgreSQL: ssä, jos sinulla on IEEE 754 -tietolähde

Yhteenveto

  • PostgreSQL tarjoaa monipuolisen natiivitietotyypin käyttäjille
  • PostgreSQL tukee merkkitietotyyppejä tekstiarvojen tallentamiseen
  • PostgreSQL tukee kahta erillistä numerotyyppiä: 1. Kokonaisluvut, 2. Liukuluvut
  • Binaarijono on tavujen tai oktettien sarja
  • PostgreSQL: llä on verkko-osoitetyyppi, jonka avulla voit optimoida verkkotietojen tallennuksen
  • Tekstihaku PostgreSQL-tietorakenteet on suunniteltu tukemaan kokotekstihakua
  • Päivämäärä / aika PSQL-tietotyypit sallivat päivämäärä- ja aikatiedot eri muodoissa
  • Boolen Postgres -kenttätyypit voivat sisältää kolme arvoa 1. Tosi 2. Väärä 3. Tyhjä
  • Geometriset PostgreSQL-tietotyypit edustavat kaksiulotteisia paikkatietokohteita
  • PostgreSQL: n luetellut tietotyypit ovat hyödyllisiä harvoin muuttuvien tietojen, kuten maakoodin tai sivuliikkeen tunnuksen, esittämiseen
  • Universally Unique Identifier (UUID) on algoritmin tuottama 128-bittinen määrä
  • PostgreSQL: ssä on monia erikoistarkoituksia, joita kutsutaan pseudotyypeiksi
  • On parasta käyttää "tekstitietotyyppiä", ellet halua rajoittaa syötettä