PostgreSQL adattípusok: Karakter - Numerikus - Bináris - Logikai

Tartalomjegyzék:

Anonim

A PostgreSQL gazdag natív adattípusokat kínál 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 a PostgreSQL-ben

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

  • Szövegtípusok
  • Numerikus típusok
  • Dátumok és idők
  • XML
  • JSON
  • Logikai
  • Bits
  • Bináris adatok
  • Hálózat
  • Tömbök
  • Hozza létre az adattípust
  • Logikai
  • Időbeli
  • UUID
  • Sor
  • JSON
  • Speciális adattípusok hálózati cím és geometriai adatok tárolásához.

Vizsgáljuk meg részletesen a PostgreSQL adattípusokat

  • Karakter adattípusok
  • Numerikus adattípusok
  • Bináris adattípusok
  • Hálózati cím típusa
  • Szöveges keresés típusa
  • Dátum / idő adattípusok
  • Logikai típus
  • Geometriai adattípusok
  • Felsorolt ​​típusok
  • Tartomány típusa
  • UUID típus
  • XML típus
  • JSON típus
  • Ál-típusok

Karakter adattípusok

A PostgreSQL támogatja a karakteres adattípusokat a szöveges értékek tárolásához. A PostgreSQL ugyanarról a belső struktúráról építi fel a karakter adattípusokat. A PostgreSQL három karakter típusú adatot kínál: CHAR (n), VARCHAR (n) és TEXT.

Név Leírás
varchar (n) Lehetővé teszi változó hosszúságú korlátozással történő deklarálását
Char (n) Fix hosszúságú, üres párnázott
Szöveg A Use felhasználhatja ezt az adattípust korlátlan hosszúságú változó deklarálására

Numerikus adattípusok

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

  • Egész számok
  • Lebegőpontos számok
Név Üzlet mérete Hatótávolság
smallint 2 bájt -32768-tól +32767-ig
egész szám 4 bájt -2147483648 - +2147483647
bigint 8 bájt -9223372036854775808 - 9223372036854775807
decimális változó Ha decimálisnak nyilvánította, az adattípus a tizedes előtti 131072 számjegytől a tizedespont utáni 16383 számjegyig terjed.
numerikus változó Ha számnak nyilvánítja, akkor a tizedespont elé legfeljebb 131072 számjegyet, a tizedesvessző után pedig 16383 számjegyet írhat be.
igazi 4 bájt 6 tizedesjegyű pontosság
kettős 8 bájt 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ó oktettek

A karakterláncok nem engednek nulla oktettet, és megtiltanak minden olyan oktett értéket és szekvenciát is, amelyek érvénytelenek az adatbázis karakterkészletének kódolási szabályai szerint.

Név Tárolási méret Leírás
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

Számos alkalmazás tárol hálózati információkat, például a felhasználók IP-címét vagy

érzékelők. A PostgreSQL három natív típussal rendelkezik, amelyek segítenek a hálózati adatok optimalizálásában.

Név Méret Leírás
almabor 7 vagy 19 byes IPV4 és IPv6 hálózatok
Inet 7 vagy 19 bájt IPV4 és IPV5 gazdagép és hálózatok
macaddr 6 bájt MAC címek

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

  1. Tárhely megtakarítás
  2. Bemeneti hibák ellenőrzése
  3. Olyan funkciók, mint az adatok alhálózat szerinti keresése

Szöveges keresés típusa

A PostgreSQL két adattípust kínál, amelyek a teljes szöveges keresést támogatják. A teljes szöveges keresés természetes nyelvű dokumentumok gyűjteményén keresztül keres, amelyek a lekérdezésnek legjobban megfelelnek.

  • Tsvector szöveges keresés A PostgreSQL változótípusok a dokumentumot szöveges keresésre optimalizált formában képviselik
  • A lekérdezés típusú szöveges keresés tárolja azokat a kulcsszavakat, amelyekre keresni kell

Dátum / idő adattípusok

A PostgreSQL időbélyeg a második pontosság helyett mikroszekundumos pontosságot kínál. Ezenkívül lehetősége van időzónával vagy anélkül is tárolni. A PostgreSQL az időzónát tartalmazó időbélyeget UTC-be konvertálja a bemeneten, és tárolja.

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

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

Időbeli adattípusok

Név Méret Hatótávolság Felbontás
Időbélyegző időzóna nélkül 8 bájt Kr. E. 4713-tól Kr. E. 294276-ig 1 mikroszekundum / 14 számjegy
Időbélyegző időzónával 8 bájt Kr. E. 4713-tól Kr. E. 294276-ig 1 mikroszekundum / 14 számjegy
dátum 4 bájt Kr. E. 4713-tól Kr. E. 294276-ig Egy nap
Időzóna nélküli idő 8 bájt 00:00:00 és 24:00:00 között 1 mikroszekundum / 14 számjegy
Idő az időzónával 12 bájt 00:00:00 + 1459 és 24: 00: 00-1459 között 1 mikroszekundum / 14 számjegy
Intervallum 12 bájt -178000000 és 178000000 év között 1 mikroszekundum / 14 számjegy

Példák:

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

Idő / idő az időzóna bemenetével

Bemenet Leírás
11: 19: 38.507 11:19:38 11:19 111938 ISO 8601
11:19 Ugyanaz, mint 11:19
23:19 ugyanaz, mint 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, ugyanaz, mint EST 23:19
23:19 EST az időzóna EST-ként van megadva, megegyezik a 23:19 EST időzónával

Logikai típus

Egy logikai adattípus befogadható

  • Igaz
  • Hamis
  • nulla

értékek.

Használ bool vagy logikai kulcsszava arra, hogy az oszlopot a logikai adattípus.

Amikor beilleszt egy értéket egy logikai oszlopba, a Postgre átalakítja a hasonló értékeket

  • Igen
  • y
  • 1
  • t
  • igaz

az 1-be.

Míg az értékek, mint

  • Nem
  • N
  • 0
  • F
  • Hamis

0-ra konvertáljuk

Az adatok kiválasztása közben az értékeket ismét visszaállítják igen, igaz, y, stb. Értékekké.

Geometriai adattípusok

A geometriai adattípusok kétdimenziós térobjektumokat 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ó Leírás
Pont 16 bájt Pont egy síkon (x, y)
Vonal 32 bájt Végtelen sor ((xl.yl). (x2.y2))
Lseg 32 bájt Véges vonalszakasz ((xl.yl). (x2.y2))
Doboz 32 bájt Téglalap alakú doboz ((xl.yl). (x2.y2))
Pálya 16n + 16n bájt Zárja be és nyissa meg az elérési utat ((xl.yl),…)
Poligon 40 + 16n bájt Poligon [(xl.yl)….]
Kör 24 bájt Kör <(xy) .r> (középpont és sugár)

Felsorolt ​​típusok

A felsorolt ​​PostgreSQL adattípus hasznos ritkán változó információk, például országkód vagy fiók azonosító ábrázolásához. A felsorolt ​​adattípust egy idegen kulcsokkal ellátott táblázat képviseli az adatok integritásának biztosítása érdekében.

Példa:

A haj színe meglehetősen statikus egy demográfiai adatbázisban

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

Tartomány típusa

Számos üzleti alkalmazás megköveteli az adatok tartományait. A tartományok kezelésére általában két oszlop van meghatározva (például: kezdő dátum, befejezés dátuma). Ez egyszerre nem hatékony és nehezen fenntartható.

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

  • int4range - Az egész számtartomány megjelenítése
  • int8range - A bigint megjelenítési tartománya
  • numrange - Megjeleníti a numerikus tartományt
  • tstrange - Segít az időbélyeg megjelenítésében időzóna nélkül
  • furcsa - Lehetővé teszi az időbélyeg megjelenítését időzónával
  • dátumtartomány - dátumtartomány

UUID típus

Az univerzálisan egyedi azonosítás (UUID) egy 128 bites mennyiség, amelyet egy algoritmus generál. Nagyon valószínűtlen, hogy ugyanazt az azonosítót egy másik ember generálja ugyanazon az algoritmuson keresztül. Ezért az elosztott rendszerek számára ezek az azonosítók ideális választás, mivel egyediséget kínálnak egyetlen adatbázisban. Az UUID-t kisbetűs hexadecimális számjegyek csoportjaként írják, különféle csoportokat kötőjellel elválasztva.

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

Példa:

d5f28c97-b962-43be-9cf8-ca1632182e8e

A Postgre elfogadja az UUID bemenetek alternatív formáit is, mint minden nagybetű, kötőjelek, zárójelek stb.

XML típus

A PostgreSQL lehetővé teszi az XML adatok tárolását egy adattípusban, 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 formálódott-e.

Példa:

XMLPARSE (DOCUMENT 'Data Type')

JSON típus

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

  1. JSON
  2. JSONB
json Jsonb
A 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 kiválasztott (az adatok visszakeresése gyors)
A bevitt adatokat pontosan úgy menti, ahogyan a szóközt is tartalmazza. Támogatja az indexelést. Optimalizálhatja a szóközöket, hogy gyorsabb legyen a visszakeresés.
Az adatfeldolgozás újrafeldolgozása Nincs szükség újrafeldolgozásra az adatok visszakeresése során

A legszélesebb körben használt JSON adattípus a jsonb-t használta, hacsak nincs valamilyen 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}');

Ál-típusok

A PostgreSQL számos speciális célú bejegyzést tartalmaz, amelyeket ál-típusoknak nevezünk. Nem használhat áltípusokat PostgreSQL oszloptípusként. Ezeket a függvény argumentumának vagy visszatérési típusának deklarálásához használjuk.

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

Név Leírás
Bármi A Funkció 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 minden enum adattípust elfogad.
Nonarray A függvény minden nem tömb adattípust elfogad.
Cstring A függvény null-végű C karakterláncot fogad el vagy ad vissza.
Belső A belső függvény elfogadja vagy visszaadja a kiszolgáló-belső adattípust.
Nyelv_kezelő Nyilatkozat szerint visszatér a nyelvkezelő.
Rekord Keressen egy olyan függvényt, amely megad egy meghatározatlan sortípust.
Trigger A trigger funkciót a trigger visszaadására használják.

Fontos, hogy az a felhasználó, aki ezt a függvényt használja, győződjön meg arról, hogy a függvény biztonságosan fog viselkedni, ha ál-típust használnak argumentumtípusként.

Bevált módszerek az adattípusok használatával

  • Használjon "szöveges" adattípust, hacsak nem akarja korlátozni a bevitelt
  • Soha ne használja a "char" szót.
  • Az egész számok az "int" szót használják. Csak akkor használja a bigint, ha valóban nagy számai vannak
  • Szinte mindig használja a "numerikus" szót
  • Használjon float-t a PostgreSQL-ben, ha rendelkezik IEEE 754 adatforrással

Összegzés

  • A PostgreSQL gazdag natív adattípusokat kínál a felhasználók számára
  • A PostgreSQL támogatja a karakteres adattípusokat a szöveges értékek tárolásához
  • A 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
  • A PostgreSQL hálózati címetípussal rendelkezik, amely optimalizálja a hálózati adatok tárolását
  • Szöveges keresés A PostgreSQL adatstruktúrákat a teljes szöveges keresés támogatására tervezték
  • Dátum / idő A PSQL adattípusok különböző formátumokban engedélyezik a dátum és idő információt
  • A logikai Postgres mezőtípusok három értéket tartalmazhatnak: 1. Igaz 2. Hamis 3. Null
  • A geometriai PostgreSQL adattípusok kétdimenziós térobjektumokat képviselnek
  • A PostgreSQL felsorolt ​​adattípusai ritkán változó információk, például országkód vagy fiók azonosító ábrázolásához hasznosak
  • Az univerzálisan egyedi azonosítás (UUID) egy 128 bites mennyiség, amelyet egy algoritmus generál
  • A PostgreSQL számos speciális célú bejegyzést tartalmaz, amelyeket ál-típusoknak nevezünk
  • A legjobb gyakorlat a "szöveges" adattípus használata, hacsak nem akarja korlátozni a bevitelt