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.
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
- Tallennustilan sรครคstรถ
- Syรถttรถvirheiden tarkistus
- 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')
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รค
- JSON
- 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

