PostgreSQL Tietotyypit: Numeerinen, Merkki, Tavu

โšก ร„lykรคs yhteenveto

PostgreSQL Tietotyypit mรครคrittelevรคt, minkรค tyyppisiรค arvoja kukin sarake voi tallentaa. Ne kattavat merkki-, numeeriset, binรครคri-, pรคivรคmรครคrรค- ja aika-, totuusarvo-, geometriset, verkko-, UUID-, XML- ja JSON-luokat. PostgreSQL antaa kรคyttรคjien myรถs luoda mukautettuja tyyppejรค CREATE TYPE -komennolla.

  • ๐Ÿ”ค Hahmotyypit: CHAR, VARCHAR ja TEXT tallentavat kiinteรคn pituisia, muuttuvan pituisia ja rajoittamattoman pituisia tekstiarvoja.
  • ๐Ÿ”ข Numeeriset tyypit: Kokonaisluvut ja liukulukutyypit vaihtelevat smallintistรค biginttiin, ja niihin kuuluu myรถs tarkkoja numeerisia ja desimaaliarvoja.
  • ๐Ÿ•’ Pรคivรคmรครคrรค ja aika: Aikaleima-, pรคivรคmรครคrรค-, aika- ja aikavรคlityypit tarjoavat mikrosekunnin tarkkuuden ja valinnaisia โ€‹โ€‹aikavyรถhykkeitรค.
  • โœ… Totuusarvo ja Enum-arvo: Totuusarvo on true, false tai null, kun taas luetellut tyypit mallintavat harvoin muuttuvia kiinteitรค joukkoja.
  • ๐ŸŒ Erikoistyypit: Verkko-, geometriset, UUID-, XML-, JSON- ja JSONB-merkit kรคsittelevรคt osoitteita, muotoja, tunnisteita ja strukturoitua dataa.
  • ๐Ÿ’ก Paras harjoitus: Suosi merkkijonoille TEXT-tyyppiรค ja numeroille NUMERIC-tyyppiรค, ja luo mukautettuja tyyppejรค vain tarvittaessa.

PostgreSQL tarjoaa kรคyttรคjille runsaan joukon alkuperรคisiรค tietotyyppejรค. Kรคyttรคjรคt voivat lisรคtรค uusia tyyppejรค CREATE TYPE -komennon avulla. Se tekee myรถs kyselyistรค yksinkertaisempia ja luettavampia.

Tietotyypit sisรครคn PostgreSQL

PostgreSQL tukee seuraavia tietotyyppejรค:

  • Tekstityypit
  • Numeeriset tyypit
  • Pรคivรคmรครคrรคt ja ajat
  • XML
  • JSON
  • boolean
  • Bittiรค
  • Binary Data
  • verkkotuotteet
  • taulukot
  • Luo tietotyyppisi
  • tilapรคinen
  • UUID
  • Erityiset tietotyypit verkko-osoitteen ja geometristen tietojen tallentamiseen.

Opiskellaan PostgreSQL tietotyypit yksityiskohtaisesti

Merkkitietotyypit

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

Nimi Tuotetiedot
varchar(n) Mahdollistaa muuttuvan pituuden ilmoittamisen rajalla
merkki(n) Kiinteรคpituinen, tyhjรค pehmustettu
teksti Use voi kรคyttรครค tรคtรค tietotyyppiรค ilmoittamaan muuttujan, jonka pituus on rajoittamaton

Numeeriset tietotyypit

PostgreSQL tukee kahta erilaista numerotyyppiรค:

  • kokonaisluvut
  • Liukulukuluvut
Nimi Myymรคlรคn koko alue
pieni 2 tavua -32768 to + 32767
kokonaisluku 4 tavua -2147483648 to + 2147483647
bigint 8 tavua -9223372036854775808 ja 9223372036854775807
desimaalin muuttuja Jos mรครคritit sen desimaaliksi, tietotyyppi vaihtelee 131072 numerosta ennen desimaalipilkkua 16383 numeroon desimaalipilkun jรคlkeen
numeerinen muuttuja Jos mรครคritรคt sen numeroksi, voit sisรคllyttรครค numeron enintรครคn 131072 numeroa ennen desimaalipilkkua 16383 numeroon desimaalipilkun jรคlkeen
todellinen 4 tavua 6 desimaalinumeron tarkkuus
kaksinkertainen 8 tavua 15 desimaalinumeron tarkkuus

Binรครคritietotyypit

Binรครคrimerkkijono on oktettien tai tavujen sarja. Binaariset Postgres-tietotyypit jaetaan kahdella tavalla.

  • Binรครคrimerkkijonot mahdollistavat nollan kertoimien tallentamisen
  • Ei-tulostettavat oktetit

Merkkijonot eivรคt salli nollaoktettia, ja ne eivรคt myรถskรครคn salli muita oktettiarvoja ja -sarjoja, jotka ovat virheellisiรค tietokannan merkistรถkoodaussรครคntรถjen mukaan.

Nimi Varastokoko Tuotetiedot
Tavu 1-4 tavua plus binรครคrimerkkijonon koko Vaihtuvapituinen binรครคrimerkkijono

Verkko-osoitteen tyyppi

Monet sovellukset tallentavat verkkotietoja, kuten kรคyttรคjien tai antureiden IP-osoitteita. PostgreSQL siinรค on kolme alkuperรคistรค tyyppiรค, jotka auttavat sinua optimoimaan verkkotiedot.

Nimi Koko Tuotetiedot
siideri 7 tai 19 tavua IPv4 ja IPv6 verkot
inet 7 tai 19 tavua IPv4- ja IPv6-isรคnnรคt ja verkot
macaddr 6 tavua MAC-osoitteet

Verkko-osoitetyyppien kรคyttรคmisellรค on seuraavat edut

  1. Tallennustilan sรครคstรถ
  2. Syรถttรถvirheiden tarkistus
  3. Toiminnot, kuten tietojen etsiminen aliverkon perusteella

Tekstihaun tyyppi

PostgreSQL tarjoaa kaksi tietotyyppiรค, jotka on suunniteltu tukemaan koko tekstihakua. Kokotekstihaku tarkoittaa hakua luonnollisenkielisten asiakirjojen kokoelmasta etsiรคkseen niitรค, jotka parhaiten vastaavat kyselyรค.

  • Tsvector-tekstihaku PostgreSQL muuttujatyypit edustavat asiakirjaa tekstihakua varten optimoidussa muodossa
  • Kyselytyyppinen tekstihaku tallentaa hakusanat, jotka tรคytyy etsiรค

Pรคivรคmรครคrรค/aika Tietotyypit

PostgreSQL aikaleima tarjoaa mikrosekunnin tarkkuuden sekunnin tarkkuuden sijaan. Lisรคksi sinulla on myรถs mahdollisuus tallentaa aikavyรถhykkeellรค tai ilman. PostgreSQL muuntaa aikaleiman aikavyรถhykkeellรค UTC:ksi syรถtteessรค ja tallentaa sen.

Pรคivรคmรครคrรคn ja ajan syรถttรถ hyvรคksytรครคn useissa 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 pรครคtรถslauselma
Aikaleima ilman aikavyรถhykettรค 8 tavua 4713 eKr. - 294276 jKr 1 mikrosekunti / 14 numeroa
Aikaleima aikavyรถhykkeellรค 8 tavua 4713 eKr. - 294276 jKr 1 mikrosekunti / 14 numeroa
data 4 tavua 4713 eKr. - 294276 jKr Yksi pรคivรค
Aika ilman aikavyรถhykettรค 8 tavua 00:00:00 to 24:00:00 1 mikrosekunti / 14 numeroa
Aika aikavyรถhykkeen kanssa 12 tavua 00:00:00 + 1459 - 24:00:00-1459 1 mikrosekunti / 14 numeroa
Aikavรคli 12 tavua -178000000 - 178000000 vuotta 1 mikrosekunti / 14 numeroa

Esimerkit

panos Tuotetiedot
2025-09-07 ISO 8601, 7. syyskuuta millรค tahansa pรคivรคmรครคrรคtyylillรค (suositeltu muoto)
Syyskuu 7, 2025 7. syyskuuta millรค tahansa pรคivรคmรครคrรคtyylillรค
9/7/2025 7. syyskuuta MDY:n kanssa, 9. heinรคkuuta DMY:n kanssa
9/7/25 7. syyskuuta 2025 MDY:n kanssa
2025-Sep-7 7. syyskuuta millรค tahansa pรคivรคmรครคrรคtyylillรค
7. syyskuuta -2018 7. syyskuuta millรค tahansa pรคivรคmรครคrรคtyylillรค
7-Sep-25 7. syyskuuta 2025 YMD:n kanssa
20250907 ISO 8601, 7. syyskuuta 2025 missรค tahansa tilassa
2025.250 vuosi ja vuoden pรคivรค, tรคssรค tapauksessa 7
J25250 Julian pรคivรคmรครคrรค

Aika/ Aika aikavyรถhyketulolla

panos Tuotetiedot
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Sama kuin 11:19
11: 19 PM sama kuin 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, sama kuin 11:19 EST
23: 19 EST aikavyรถhyke mรครคritetty EST:ksi, sama kuin 11:19 EST

Boolen tyyppi

Boolen tietotyyppi voi sisรคltรครค

  • Totta
  • Vรครคrรค
  • nolla

arvot.

Kรคytรคt a Bool or boolean avainsana ilmoittaaksesi Boolen tietotyypin sarakkeen.

Kun lisรครคt arvoja loogiseen sarakkeeseen, Postgre muuntaa arvot, kuten

  • Kyllรค
  • 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 arvoiksi kyllรค, tosi, y jne.

Geometriset tietotyypit

Geometriset tietotyypit edustavat kaksiulotteisia spatiaalisia objekteja. Ne auttavat suorittamaan toimintoja, kuten pyรถrityksiรค, skaalausta, kรครคnnรถstรค jne.

Nimi Varastointikoko Edustus Tuotetiedot
Kohta 16 tavua Piste lentokoneessa (X, y)
linja 32 tavua ร„รคretรถn viiva ((xl.yl).(xยฒ.yยฒ))
Lseg 32 tavua ร„รคrillinen jana ((xl.yl).(xยฒ.yยฒ))
Box 32 tavua Suorakulmainen Box ((xl.yl).(xยฒ.yยฒ))
Polun, 16n + 16n tavua Sulje ja avaa polku ((xl.yl),โ€ฆ)
Polygon 40 + 16n tavua Polygon [(xl.yl),โ€ฆ.]
Ympyrรค 24 tavua Ympyrรค <(xy).r> (keskipiste ja sรคde)

Luetteloidut tyypit

Lueteltu PostgreSQL tietotyyppi on hyรถdyllinen edustamaan harvoin muuttuvia tietoja, kuten maakoodia tai haaratunnusta. Enumerated-tietotyyppi esitetรครคn 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')

Luetteloidut tyypit

Alueen tyyppi

Monet yrityssovellukset vaativat tietoja rajoissa. Tyypillisesti kaksi saraketta (esimerkiksi aloituspรคivรค, lopetuspรคivรค) mรครคritetรครคn kรคsittelemรครคn alueita. Tรคmรค on sekรค tehotonta ettรค vaikeasti yllรคpidettรคvรครค.

Postgre on rakentanut aluetyyppejรค seuraavasti

  • int4range โ€” Nรคytรค kokonaisluvun alue
  • int8range โ€” Bigintin nรคyttรถalue
  • numeroalue โ€” Nรคyttรครค numeerisen alueen
  • tstrange โ€” Auttaa nรคyttรคmรครคn aikaleiman ilman aikavyรถhykettรค
  • outo โ€” Voit nรคyttรครค aikaleiman aikavyรถhykkeen kanssa
  • pรคivรคmรครคrรคalue โ€” Aikavรคli

UUID-tyyppi

UUID (Universally Unique Identifier) โ€‹โ€‹on 128-bittinen tunniste, jonka algoritmi luo. On hyvin epรคtodennรคkรถistรค, ettรค joku toinen henkilรถ maailmassa luo saman tunnisteen kรคyttรคen samaa algoritmia. Siksi hajautetuissa jรคrjestelmissรค nรคmรค tunnisteet ovat ihanteellinen valinta, koska ne tarjoavat ainutlaatuisuuden yhden tietokannan sisรคllรค. UUID kirjoitetaan ryhmรคnรค pieniรค heksadesimaalinumeroita, joiden ryhmรคt on erotettu toisistaan โ€‹โ€‹yhdysmerkeillรค.

PostgreSQL sillรค on natiivi UUID-tietotyyppi, joka kuluttaa 16 tavua tallennustilaa. UUID on ihanteellinen tietotyyppi ensisijaisille avaimille.

esimerkki

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre hyvรคksyy myรถs vaihtoehtoiset UUID-syรถtteet, kuten isot kirjaimet, ei vรคliviivoja, aaltosulkeet jne.

XML-tyyppi

PostgreSQL mahdollistaa XML-tietojen tallentamisen tietotyyppiin, mutta se ei ole muuta kuin tekstitietotyypin laajennus. Mutta etuna on, ettรค se tarkistaa, ettรค syรถtetty XML on hyvin muotoiltu.

esimerkki

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

JSON-tyyppi

JSON-tietojen tallentamiseen PostgreSQL tarjoaa 2 tietotyyppiรค

  1. JSON
  2. JSONB
json Jsonb
Yksinkertainen tekstitietotyypin laajennus JSON-tarkistuksella JSON-tietojen binรครคriesitys
Lisรครคminen on nopeaa, mutta tietojen haku on suhteellisen hidasta. Lisรครคminen on hidasta, mutta valitse (tietojen haku on nopea)
Tallentaa syรถtetyt tiedot tรคsmรคlleen sellaisenaan, mukaan lukien vรคlilyรถnnit. Tukee indeksointia. Saattaa optimoida vรคlilyรถnnin nopeuttaakseen hakua.
Uudelleenkรคsittely tietojen haussa Tietojen haussa ei vaadita uudelleenkรคsittelyรค

Yleisimmin kรคytetty JSON-tietotyyppi kรคytti meille jsonb:tรค, ellei ole erityistรค tarvetta kรคyttรครค JSON-tietotyyppiรค.

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"], "onboarded": true}');

Pseudotyypit

PostgreSQL on monia erikoiskรคyttรถisiรค merkintรถjรค, joita kutsutaan pseudotyypeiksi. Et voi kรคyttรครค pseudotyyppejรค PostgreSQL saraketyypit. Niitรค kรคytetรครคn ilmoittamaan tai funktion argumentti tai palautustyyppi.

Jokainen kรคytettรคvissรค olevista pseudotyypeistรค on hyรถdyllinen tilanteissa, joissa funktion kรคyttรคytymisdokumentit eivรคt vastaa vain tietyn arvon ottamista tai palauttamista. SQL-tietotyyppi.

Nimi Tuotetiedot
mitรครคn Toiminto hyvรคksyy kaikki syรถtetyt tietotyypit.
Taulukko Funktio hyvรคksyy minkรค tahansa taulukon tietotyypin.
Mikรค tahansa elementti Funktio hyvรคksyy minkรค tahansa tietotyypin.
Mikรค tahansa enum Funktio hyvรคksyy minkรค tahansa enum-tietotyypin.
Nonarray Funktio hyvรคksyy minkรค tahansa muun kuin matriisin tietotyypin.
Cstring Funktio hyvรคksyy tai palauttaa nollapรครคtteisen C-merkkijonon.
Sisรคinen Sisรคinen toiminto hyvรคksyy tai palauttaa palvelimen sisรคisen tietotyypin.
Language_handler Sen on ilmoitettu palauttavan kielenkรคsittelijรคn.
ennรคtys Etsi funktio, joka palauttaa mรครคrittelemรคttรถmรคn rivityypin.
Laukaista Liipaisutoimintoa kรคytetรครคn liipaisimen palauttamiseen.

On tรคrkeรครค, ettรค tรคtรค funktiota kรคyttรคvรคn kรคyttรคjรคn on varmistettava, ettรค funktio toimii turvallisesti, kun argumenttityyppinรค kรคytetรครคn pseudotyyppiรค.

Tietotyyppien kรคytรถn parhaat kรคytรคnnรถt

  • Kรคytรค "teksti"-tietotyyppiรค, ellet halua rajoittaa syรถttรถรค
  • ร„lรค koskaan kรคytรค sanaa "char".
  • Kokonaisluvut kรคyttรคvรคt sanaa "int". Kรคytรค bigintiรค vain, kun sinulla on todella suuria numeroita
  • Kรคytรค "numeerista" melkein aina
  • Kรคytรค float in PostgreSQL jos sinulla on IEEE 754 -tietolรคhde

UKK

Numeerinen (desimaali) tallentaa tarkat arvot ja sopii erinomaisesti rahaan ja tarkkoihin laskelmiin. Liukulukutyypit (reaali- ja double-tyypit) tallentavat likimรครคrรคisiรค arvoja nopeammin, mutta pyรถristysvirheet ovat pieniรค, joten vรคltรค niitรค tarkkojen taloustietojen kanssa.

Kyllรค. PostgreSQL sallii minkรค tahansa sarakkeen tallentaa perustyyppisen taulukon, kuten integer[] tai text[]. Taulukot ovat hyรถdyllisiรค arvoluetteloille, ja niitรค voidaan hakea, indeksoida ja poistaa sisรคkkรคisistรค kyselyissรค.

Kรคytรค valuutalle numeerista tyyppiรค, koska se tallentaa tarkat desimaaliluvut. Vรคltรค liukulukutyyppejรค, jotka aiheuttavat pyรถristysvirheitรค. Myรถs erillinen rahatyyppi on olemassa, mutta se on vรคhemmรคn joustava usean valuutan datalle.

Tekoรคly voi tarkastella nรคytedataasi ja suositella sopivia tyyppejรค, kuten numeerista rahalle tai jsonb:tรค joustaville kentille. Se selittรครค tallennustilan, tarkkuuden ja suorituskyvyn vรคliset kompromissit, jotta voit tehdรค pรครคtรถksiรค luottavaisin mielin.

Kyllรค. Tekoรคly voi yhdistรครค tietotyyppejรค MySQL, Oracletai SQL Server heidรคn PostgreSQL vastineet ja lippujen epรคsuhtaudet, kuten TINYINT tai NVARCHAR, helping suunnittelet sujuvamman tietokannan migraation.

Tiivistรค tรคmรค viesti seuraavasti: