PostgreSQL Tietotyypit: tavu, numeerinen, merkki, binääri
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
- verkko
- taulukot
- Luo tietotyyppisi
- boolean
- tilapäinen
- UUID
- Ryhmä
- JSON
- 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 IPV5-isäntä 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 syyskuu 20225 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 ).(x2.y2)) |
Lseg | 32 tavua | Äärillinen jana | ((xl.yl ).(x2.y2)) |
Box | 32 tavua | Suorakulmainen Box | ((xl.yl ).(x2.y2)) |
Polun, | 16n + 16n tavua | Sulje ja avaa polku | ((xl.yl),…) |
Monikulmio | 40 + 16n tavua | Monikulmio | [(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
Universally Unique Identifies (UUID) on 128-bittinen suure, jonka algoritmi luo. On erittäin epätodennäköistä, että joku muu maailmassa oleva henkilö luo saman tunnisteen samaa algoritmia käyttäen. Tästä syystä hajautetuille järjestelmille nämä tunnisteet ovat ihanteellinen valinta, koska ne tarjoavat ainutlaatuisuutta yhdessä tietokannassa. UUID on kirjoitettu ryhmänä pieniä kirjaimia heksadesimaalilukuja, joissa eri ryhmät on erotettu yhdysviivalla.
PostgreSQL siinä on natiivi UUID-tietotyyppi, joka kuluttaa 16 tavua tallennustilaa. UUID on ihanteellinen tietotyyppi perusavaimille.
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"], "onboareded": 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
Yhteenveto
- PostgreSQL tarjoaa käyttäjille runsaan joukon alkuperäisiä tietotyyppejä
- PostgreSQL tukee merkkitietotyyppejä tekstiarvojen tallentamiseen
- PostgreSQL tukee kahta erilaista lukutyyppiä: 1. Kokonaisluvut, 2. Liukulukuluvut
- Binäärimerkkijono on tavujen tai oktettien sarja
- PostgreSQL on Verkko-osoitetyyppi, joka auttaa sinua optimoimaan verkkotietojen tallennuksen
- Tekstihaku PostgreSQL tietorakenteet on suunniteltu tukemaan koko tekstihakua
- Päivämäärä/aika PSQL-tietotyypit sallivat päivämäärä- ja aikatiedot eri muodoissa
- Boolen Postgres-kenttätyypeissä voi olla kolme arvoa 1. Tosi 2. Epätosi 3. Nolla
- Geometrinen PostgreSQL tietotyypit edustavat kaksiulotteisia spatiaalisia objekteja
- Luetteloidut tietotyypit PostgreSQL on hyödyllinen edustamaan harvoin muuttuvia tietoja, kuten maakoodia tai haaratunnusta
- Universally Unique Identifies (UUID) on 128-bittinen määrä, jonka algoritmi luo.
- PostgreSQL on monia erikoiskäyttöisiä merkintöjä, joita kutsutaan pseudotyypeiksi
- Paras käytäntö on käyttää "teksti"-tietotyyppiä, ellet halua rajoittaa syöttöä