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
- Tárhely megtakarítás
- Bemeneti hibák ellenőrzése
- 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
- JSON
- 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