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
- Tárolóhely-megtakarítás
- Beviteli hiba ellenőrzése
- 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')
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
- JSON
- 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