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
- Tallennustilan säästö
- Syötevirheiden tarkistus
- 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ä
- JSON
- 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ä