PostgreSQL Adattípusok: bájt, numerikus, karakter, bináris

PostgreSQL natív adattípusok gazdag készletét kínálja a felhasználók számára. A felhasználók új típusokat adhatnak hozzá a CREATE TYPE parancs segítségével. Emellett egyszerűbbé és olvashatóbbá teszi a lekérdezéseket.

Adattípusok be PostgreSQL

PostgreSQL a következő adattípusokat támogatja:

  • Szövegtípusok
  • Numerikus típusok
  • Dátumok és idők
  • XML
  • JSON
  • logikai
  • Darabok
  • Bináris adatok
  • Hálózat
  • tömbök
  • Hozza létre az adattípust
  • logikai
  • ideiglenes
  • UUID
  • Sor
  • JSON
  • Speciális adattípusok hálózati címek és geometriai adatok tárolására.

Tanuljunk PostgreSQL az adattípusokat részletesen

Karakter adattípusok

PostgreSQL támogatja a karakteres adattípusokat a szöveges értékek tárolására. PostgreSQL karakteres adattípusokat épít fel azonos belső struktúrákból. PostgreSQL három karakteres adattípust kínál: CHAR(n), VARCHAR(n) és TEXT.

Név Description
varchar(n) Lehetővé teszi a változó hosszúságú korlátozások deklarálását
Char(n) Fix hosszúságú, üres párnázott
szöveg A Use ezt az adattípust használhatja egy korlátlan hosszúságú változó deklarálására

Numerikus adattípusok

PostgreSQL két különböző típusú számot támogat:

  • Egész számok
  • Lebegőpontos számok
Név Az üzlet mérete Választék
smallint 2 bytes -32768 a + 32767
egész szám 4 bytes -2147483648 a + 2147483647
bigint 8 bytes -9223372036854775808 a 9223372036854775807
decimális változó Ha decimálisként deklarálta, az adattípus a tizedesvessző előtti 131072 számjegytől a tizedesvessző utáni 16383 számjegyig terjed.
numerikus változó Ha számként deklarálja, akkor a tizedesvessző előtti 131072 számjegyig a tizedesvessző utáni 16383 számjegyig szerepelhet
igazi 4 bytes 6 tizedesjegy pontosság
kétszeresére 8 bytes 15 tizedesjegy pontosság

Bináris adattípusok

A bináris karakterlánc oktettek vagy bájtok sorozata. A bináris Postgres adattípusok kétféleképpen oszlanak meg.

  • A bináris karakterláncok lehetővé teszik a nulla értékű esélyek tárolását
  • Nem nyomtatható nyolcasok

A karakterláncok nem engedélyezik a nulla oktetteket, és nem engedélyeznek minden más oktett értéket és sorozatot, amelyek érvénytelenek az adatbázis karakterkészlet kódolási szabályai szerint.

Név Tárolási méret Description
Byte 1-4 bájt plusz a bináris karakterlánc mérete Változó hosszúságú bináris karakterlánc

Hálózati cím típusa

Sok alkalmazás hálózati információkat tárol, például a felhasználók vagy érzékelők IP-címeit. PostgreSQL három natív típussal rendelkezik, amelyek segítenek optimalizálni a hálózati adatokat.

Név Méret Description
almabor 7 vagy 19 bájt IPV4 és IPv6 hálózatok
inet 7 vagy 19 bájt IPV4 és IPV5 gazdagép és hálózatok
macaddr 6 bytes MAC címeket

A hálózati címtípusok használatának a következő előnyei vannak

  1. Tárolóhely-megtakarítás
  2. Beviteli hiba ellenőrzése
  3. Olyan funkciók, mint az adatok keresése alhálózat szerint

Szöveg keresési típusa

PostgreSQL két adattípust biztosít, amelyek a teljes szöveges keresést támogatják. A teljes szövegű keresés természetes nyelvű dokumentumok gyűjteményében keresi azokat, amelyek a legjobban megfelelnek a lekérdezésnek.

  • Tsvector szöveges keresés PostgreSQL A változótípusok szöveges keresésre optimalizált formában jelenítenek meg egy dokumentumot
  • A lekérdezés típusú szöveges keresés tárolja a keresendő kulcsszavakat

Dátum/Idő adattípusok

PostgreSQL Az időbélyeg mikroszekundumos pontosságot kínál a másodperces pontosság helyett. Ezenkívül lehetősége van időzónával vagy anélkül történő tárolásra is. PostgreSQL az időzónával rendelkező időbélyeget UTC-re konvertálja a bemeneten, és eltárolja.

A dátum és idő bevitele különféle formátumokban elfogadott, beleértve a hagyományos Postgres, ISO 8601. SQL-kompatibilis stb.

PostgreSQL támogatja a napi / hónap / év rendelést. A támogatott formátumok: DMY, MDY, YMD

Időbeli adattípusok

Név Méret Választék Felbontás
Időbélyeg időzóna nélkül 8 bytes Kr.e. 4713-tól i.sz. 294276-ig 1 mikroszekundum/14 számjegy
Időbélyeg időzónával 8 bytes Kr.e. 4713-tól i.sz. 294276-ig 1 mikroszekundum/14 számjegy
adat 4 bytes Kr.e. 4713-tól i.sz. 294276-ig Egy nap
Idő időzóna nélkül 8 bytes 00:00:00 to 24:00:00 1 mikroszekundum/14 számjegy
Idő az időzónával 12 bytes 00:00:00 + 1459-24:00:00-1459 1 mikroszekundum/14 számjegy
Intervallum 12 bytes -178000000-178000000 év 1 mikroszekundum/14 számjegy

Példák

Bemenet Description
2025-09-07 ISO 8601, szeptember 7. bármilyen dátumstílussal (ajánlott formátum)
7. szeptember 2025. Szeptember 7. bármilyen dátumstílussal
9/7/2025 Szeptember 7. MDY-vel, július 9. DMY-vel
9/7/25 7. szeptember 2025. az MDY-vel
2025-Sep-7 Szeptember 7. bármilyen dátumstílussal
Szeptember-7 Szeptember 7. bármilyen dátumstílussal
7-Sep-25 7. szeptember 2025. YMD-vel
20250907 ISO 8601,7 20225 szept. bármilyen módban
2025.250 év és az év napja, jelen esetben 7. szeptember 2025
J25250 Julian randevú

Idő/Idő időzóna bemenettel

Bemenet Description
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Ugyanaz, mint 11:19
11: 19 PM ugyanaz, mint 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, ugyanaz, mint 11:19 EST
23: 19 EST időzóna EST, ugyanaz, mint 11:19 EST

Logikai típus

A logikai adattípusok tárolhatók

  • Igaz
  • Hamis
  • null

értékeket.

Használsz a bool or logikai kulcsszó egy Boole-féle adattípusú oszlop deklarálásához.

Amikor értékeket szúr be egy logikai oszlopba, a Postgre olyan értékeket konvertál, mint pl

  • Igen
  • y
  • 1
  • t
  • igaz

1-ig.

Míg az értékek, mint

  • Nem
  • N
  • 0
  • F
  • Hamis

0-ra konvertálják

Az adatok kiválasztása során az értékek ismét visszakonvertálódnak yes, true, y stb.

Geometriai adattípusok

A geometriai adattípusok kétdimenziós térbeli objektumokat képviselnek. Segítenek olyan műveletek végrehajtásában, mint a forgatás, méretezés, fordítás stb.

Név Tárolási méret Reprezentáció Description
pont 16 bytes Pont egy síkon (x,y)
vonal 32 bytes Végtelen vonal ((xl.yl ).(x2.y2))
Lseg 32 bytes Véges vonalszakasz ((xl.yl ).(x2.y2))
Box 32 bytes Négyszögletes Box ((xl.yl ).(x2.y2))
Útvonal 16n + 16n bájt Útvonal bezárása és megnyitása ((xl.yl),…)
Poligon 40 + 16n bájt Poligon [(xl.yl)….]
Kör 24 bytes Kör <(xy).r> (középpont és sugár)

Felsorolt ​​típusok

Felsorolt PostgreSQL Az adattípus hasznos a ritkán változó információk, például az országkód vagy a fiókazonosító megjelenítéséhez. A felsorolt ​​adattípus egy táblázatban jelenik meg idegen kulcsokkal az adatok integritásának biztosítása érdekében.

Példa

A hajszín meglehetősen statikus a demográfiai adatbázisban

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

Felsorolt ​​típusok

Tartomány típusa

Számos üzleti alkalmazás tartományokban igényel adatokat. Általában két oszlop (például: kezdő dátum, záró dátum) van meghatározva a tartományok kezelésére. Ez egyszerre nem hatékony és nehéz fenntartani.

A Postgre a következőképpen építette fel a tartománytípusokat

  • int4range — Egész számok tartománya
  • int8range — Bigint megjelenítési tartománya
  • számtartomány — A numerikus tartományt mutatja
  • tstrange — Segít az időbélyeg időzóna nélküli megjelenítésében
  • furcsa — Lehetővé teszi az időbélyeg megjelenítését az időzónával
  • dátumtartomány — Dátumtartomány

UUID típus

Az UUID (Universally Unique Identifies) egy 128 bites mennyiség, amelyet egy algoritmus generál. Nagyon valószínűtlen, hogy ugyanazt az azonosítót egy másik személy generálja a világon ugyanazzal az algoritmussal. Éppen ezért az elosztott rendszerek számára ezek az azonosítók ideális választást jelentenek, mivel egyediséget kínálnak egyetlen adatbázison belül. Az UUID-t kisbetűs hexadecimális számjegyek csoportjaként írják le, a különböző csoportokat kötőjelekkel elválasztva.

PostgreSQL natív UUID adattípussal rendelkezik, amely 16 bájt tárhelyet fogyaszt. Az UUID ideális adattípus elsődleges kulcsokhoz.

Példa

d5f28c97-b962-43be-9cf8-ca1632182e8e

A Postgre az UUID bemenetek alternatív formáit is elfogadja, mint például a csupa nagybetű, kötőjelek, kapcsos zárójelek stb.

XML típus

PostgreSQL lehetővé teszi az XML adatok adattípusban való tárolását, de ez nem más, mint egy szöveges adattípus kiterjesztése. De az előnye, hogy ellenőrzi, hogy a bemeneti XML megfelelően van-e formázott.

Példa

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

JSON típus

JSON adatok tárolására PostgreSQL 2 adattípust kínál

  1. JSON
  2. JSONB
json Jsonb
Egy szöveges adattípus egyszerű kiterjesztése JSON-ellenőrzéssel A JSON-adatok bináris ábrázolása
A beszúrás gyors, de az adatok visszakeresése viszonylag lassú. A beszúrás lassú, de kijelölés (az adatlekérés gyors)
A bevitt adatokat pontosan úgy menti, ahogy vannak, szóközökkel együtt. Támogatja az indexelést. Optimalizálhatja a szóközt, hogy gyorsabb legyen a visszakeresés.
Újrafeldolgozás az adatok lekérésekor Az adatok lekérésekor nincs szükség újrafeldolgozásra

A legszélesebb körben használt JSON-adattípus a jsonb-t használta, hacsak nincs speciális igény a JSON-adattípus használatára.

Példa

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}'); 

Pszeudo-típusok

PostgreSQL sok speciális célú bejegyzést tartalmaz, amelyeket pszeudotípusoknak neveznek. Nem használhat pszeudotípusokat mint PostgreSQL oszloptípusok. Ezeket a függvények argumentumának vagy visszatérési típusának deklarálására használják.

A rendelkezésre álló pszeudotípusok mindegyike hasznos olyan helyzetekben, amikor egy függvény viselkedési dokumentumai nem felelnek meg egyszerűen egy adott érték elvételének vagy visszaadásának. SQL adattípus.

Név Description
Bármilyen A függvény minden bemeneti adattípust elfogad.
Egy tömb A függvény bármilyen tömb adattípust elfogad.
Bármely elem A függvény bármilyen adattípust elfogad.
Bármilyen enum A függvény bármilyen enum adattípust elfogad.
Nonarray A függvény bármilyen nem tömb típusú adattípust elfogad.
Cstring A függvény elfogadja vagy visszaadja a null-végződésű C karakterláncot.
belső A belső függvény elfogadja vagy visszaadja a szerver belső adattípusát.
Language_handler Nyelvi kezelőt ad vissza.
Rekord Keressen egy függvényt, amely meghatározatlan sortípust ad vissza.
ravasz Egy trigger funkciót használnak a trigger visszaadására.

Fontos, hogy a függvényt használó felhasználónak meg kell győződnie arról, hogy a függvény biztonságosan fog viselkedni, ha pszeudotípust használnak argumentumtípusként.

Az adattípusok használatának bevált módszerei

  • Használjon „szöveges” adattípust, hacsak nem szeretné korlátozni a bevitelt
  • Soha ne használja a „char” szót.
  • Az egész számok az „int” kifejezést használják. Csak akkor használja a bigint, ha nagyon nagy számokkal rendelkezik
  • Szinte mindig használja a „numerikus” kifejezést
  • Használja az úszót PostgreSQL ha IEEE 754 adatforrással rendelkezik

Összegzésként

  • PostgreSQL natív adattípusok gazdag készletét kínálja a felhasználók számára
  • PostgreSQL támogatja a karakteres adattípusokat a szöveges értékek tárolására
  • PostgreSQL két különböző típusú számot támogat: 1. Egész számok, 2. Lebegőpontos számok
  • A bináris karakterlánc bájtok vagy oktettek sorozata
  • PostgreSQL Hálózati címtípussal rendelkezik, amely segíti a hálózati adatok tárolásának optimalizálását
  • Szöveges keresés PostgreSQL az adatstruktúrákat úgy tervezték, hogy támogassák a teljes szöveges keresést
  • Dátum/Idő A PSQL adattípusok különböző formátumú dátum- és időinformációkat tesznek lehetővé
  • A logikai Postgres mezőtípusok három értéket tartalmazhatnak: 1. Igaz 2. Hamis 3. Null
  • Geometriai PostgreSQL az adattípusok kétdimenziós térbeli objektumokat jelentenek
  • Felsorolt ​​adattípusok itt PostgreSQL hasznos a ritkán változó információk, például az országkód vagy a fiókazonosító megjelenítéséhez
  • Az univerzálisan egyedi azonosítók (UUID) egy 128 bites mennyiség, amelyet egy algoritmus generál
  • PostgreSQL sok speciális célú bejegyzést tartalmaz, amelyeket pszeudotípusoknak neveznek
  • A legjobb gyakorlat a „szöveges” adattípus használata, hacsak nem szeretné korlátozni a bevitelt