PostgreSQL Adattípusok: Numerikus, Karakteres, Bájtos

⚡ Okos összefoglaló

PostgreSQL Az adattípusok határozzák meg az egyes oszlopok által tárolható értékek típusát, beleértve a karakteres, numerikus, bináris, dátum és idő, logikai, geometriai, hálózati, UUID, XML és JSON kategóriákat. PostgreSQL lehetővé teszi a felhasználók számára egyéni típusok létrehozását a CREATE TYPE paranccsal.

  • 🔤 Karakter típusok: A CHAR, VARCHAR és TEXT függvények fix hosszúságú, változó hosszúságú és korlátlan hosszúságú szöveges értékeket tárolnak.
  • 🔢 Numerikus típusok: Az egész és lebegőpontos típusok a smallint-től a bigint-ig terjednek, valamint pontos numerikus és decimális értékeket is tartalmaznak.
  • 🕒 Dátum és idő: Az időbélyeg, dátum, idő és intervallum típusok mikroszekundumos pontosságot kínálnak opcionális időzónákkal.
  • Logikai és Felsorolás: A logikai típusok igaz, hamis vagy null értékűek, míg a felsorolt ​​típusok ritkán változó fix halmazokat modelleznek.
  • 🌐 Speciális típusok: A hálózati, geometriai, UUID, XML, JSON és JSONB kezeli a címeket, alakzatokat, azonosítókat és strukturált adatokat.
  • ???? Legjobb gyakorlat: Karakterláncokhoz TEXT, számokhoz NUMERIC típust részesíts előnyben, és csak szükség esetén hozz létre egyéni típusokat.

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
  • ideiglenes
  • UUID
  • 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 Leírás
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 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

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 Leírás
almabor 7 vagy 19 bájt IPv4 és IPv6 hálózatok
inet 7 vagy 19 bájt IPv4 és IPv6 hosztok é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 Leírás
2025-09-07 ISO 8601, szeptember 7. bármilyen dátumstílussal (ajánlott formátum)
September 7, 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, 2025. szeptember 7., 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 Leírás
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ó Leírás
pont 16 bytes Pont egy síkon (x,y)
vonal 32 bytes Végtelen vonal ((xl.yl).(x².y²))
Lseg 32 bytes Véges vonalszakasz ((xl.yl).(x².y²))
Box 32 bytes Négyszögletes Box ((xl.yl).(x².y²))
Útvonal 16n + 16n bájt Útvonal bezárása és megnyitása ((xl.yl),…)
Polygon 40 + 16n bájt Polygon [(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 univerzálisan egyedi azonosító (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 személy generálja a világon ugyanazzal az algoritmussal. Ezért az elosztott rendszerek számára ezek az azonosítók ideális választást jelentenek, mivel egyediséget biztosítanak egyetlen adatbázison belül. Az UUID kisbetűs hexadecimális számjegyek csoportjaként íródik, ahol a különböző csoportok kötőjelekkel vannak elválasztva.

PostgreSQL natív UUID adattípussal rendelkezik, amely 16 bájt tárhelyet foglal el. Az UUID ideális adattípus az 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"], "onboarded": 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 Leírás
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

GYIK

A numerikus (decimális) típusok pontos értékeket tárolnak, és ideálisak pénzügyekhez és precíz számításokhoz. A lebegőpontos típusok (valós és double) hozzávetőleges értékeket tárolnak gyorsabb teljesítménnyel, de kis kerekítési hibákkal, ezért kerüljük őket pontos pénzügyi adatok esetén.

Igen. PostgreSQL lehetővé teszi bármely oszlop számára, hogy egy alaptípusú tömböt tároljon, például integer[] vagy text[]. A tömbök hasznosak értékek listájához, és kereshetők, indexelhetők és kioszthatók a beágyazásból a lekérdezésekben.

A pénznemekhez használd a numerikus típust, mert pontos decimális értékeket tárol. Kerüld a lebegőpontos típusokat, amelyek kerekítési hibákat okoznak. Létezik a dedikált pénztípus is, de kevésbé rugalmas többpénznemes adatok esetén.

A mesterséges intelligencia áttekintheti a mintaadatokat, és megfelelő típusokat javasolhat, például numerikus típust a pénz mezőkhöz vagy jsonb típust a rugalmas mezőkhöz. Elmagyarázza a tárhely, a pontosság és a teljesítmény közötti kompromisszumokat, így magabiztosan dönthetsz.

Igen. A mesterséges intelligencia képes adattípusokat leképezni MySQL, Oracle, vagy az SQL Server a sajátjukhoz PostgreSQL ekvivalensek és jelzőeltérések, például TINYINT vagy NVARCHAR, helping zökkenőmentesebb adatbázis-migrációt tervez.

Foglald össze ezt a bejegyzést a következőképpen: