PostgreSQL biedt een uitgebreide reeks native gegevenstypen voor gebruikers. Gebruikers kunnen nieuwe typen toevoegen met behulp van de opdracht CREATE TYPE. Het maakt zoekopdrachten ook eenvoudiger en leesbaarder.
Gegevenstypen in PostgreSQL
PostgreSQL ondersteunt de volgende gegevenstypen:
- Teksttypen
- Numerieke typen
- Data en tijden
- XML
- JSON
- Boolean
- Bits
- Binaire data
- Netwerk
- Arrays
- Maak uw gegevenstype
- Boolean
- Tijdelijk
- UUID
- Array
- JSON
- Speciale gegevenstypen voor het opslaan van een netwerkadres en geometrische gegevens.
Laten we de gegevenstypen van PostgreSQL in detail bestuderen
- Karakter datatypes
- Numerieke gegevenstypen
- Binaire gegevenstypen
- Type netwerkadres
- Tekstzoektype
- Datum / tijd-gegevenstypen
- Booleaans type
- Geometrische gegevenstypen
- Opgesomde typen
- Bereik Type
- UUID-type
- XML-type
- JSON-type
- Pseudo-typen
Karakter datatypes
PostgreSQL ondersteunt tekengegevenstypen voor het opslaan van tekstwaarden. PostgreSQL bouwt karaktergegevenstypen op uit dezelfde interne structuren. PostgreSQL biedt drie gegevenstypen voor tekens: CHAR (n), VARCHAR (n) en TEXT.
Naam | Omschrijving |
---|---|
varchar (n) | Hiermee kunt u variabele lengte declareren met een limiet |
Char (n) | Blanco gewatteerd met vaste lengte |
Tekst | Gebruik kan dit gegevenstype gebruiken om een variabele met onbeperkte lengte te declareren |
Numerieke gegevenstypen
PostgreSQL ondersteunt twee verschillende soorten getallen:
- Gehele getallen
- Getallen met drijvende komma
Naam | Winkelgrootte | Bereik |
---|---|---|
smallint | 2 bytes | -32768 tot +32767 |
geheel getal | 4 bytes | -2147483648 tot +2147483647 |
bigint | 8 bytes | -9223372036854775808 tot 9223372036854775807 |
decimale | variabele | Als u het als decimaal gegevenstype hebt opgegeven, varieert van 131072 cijfers voor de komma tot 16383 cijfers achter de komma |
numeriek | variabele | Als u het als nummer opgeeft, kunt u een getal van maximaal 131072 cijfers voor de komma tot 16383 cijfers achter de komma opnemen |
echt | 4 bytes | Nauwkeurigheid van 6 decimalen |
dubbele | 8 bytes | Nauwkeurigheid van 15 decimalen |
Binaire gegevenstypen
Een binaire string is een reeks octetten of bytes. Binaire Postgres-gegevenstypen zijn op twee manieren onderverdeeld.
- Met binaire strings kunnen odds met een waarde nul worden opgeslagen
- Octetten die niet kunnen worden afgedrukt
Tekenreeksen staan geen nul-octetten toe en staan ook geen andere octetwaarden en -reeksen toe die ongeldig zijn volgens de coderingsregels van de tekenset van de database.
Naam | Opslag grootte | Omschrijving |
---|---|---|
Byte | 1 tot 4 bytes plus de grootte van de binaire reeks | Binaire tekenreeks met variabele lengte |
Type netwerkadres
Veel applicaties slaan netwerkinformatie op, zoals het IP-adres van gebruikers of
sensoren. PostgreSQL heeft drie native types die u helpen om de netwerkgegevens te optimaliseren.
Naam | Grootte | Omschrijving |
---|---|---|
cider | 7 of 19 byes | IPV4- en IPv6-netwerken |
Inet | 7 of 19 bytes | IPV4- en IPV5-host en netwerken |
macaddr | 6 bytes | MAC-adressen |
Het gebruik van netwerkadrestypen heeft de volgende voordelen
- Opslagruimtebesparing
- Invoerfoutcontrole
- Functies zoals het zoeken naar gegevens op subnet
Tekstzoektype
PostgreSQL biedt twee gegevenstypen die zijn ontworpen om zoeken in volledige tekst te ondersteunen. Zoeken in volledige tekst is het doorzoeken van een verzameling documenten in natuurlijke taal om de documenten te doorzoeken die het beste overeenkomen met een zoekopdracht.
- Tsvector-tekstzoekopdracht PostgreSQL-variabeletypen vertegenwoordigen een document in een vorm die is geoptimaliseerd voor tekstzoekopdrachten
- De zoekopdrachttype tekstzoekopdracht slaat de trefwoorden op die moeten worden doorzocht
Datum / tijd-gegevenstypen
PostgreSQL-tijdstempel biedt een precisie van een microseconde in plaats van een tweede precisie. Bovendien heb je ook de mogelijkheid om met of zonder tijdzone op te slaan. PostgreSQL converteert het tijdstempel met tijdzone naar UTC bij invoer en slaat het op.
Datum- en tijdinvoer wordt geaccepteerd in verschillende formaten, waaronder traditioneel Postgres, ISO 8601. SQL-compatibel etc.
PostgreSQL ondersteunt het bestellen van dag / maand / jaar. Ondersteunde formaten zijn DMY, MDY, YMD
Tijdelijke gegevenstypen
Naam | Grootte | Bereik | Resolutie |
---|---|---|---|
Tijdstempel zonder tijdzone | 8 bytes | 4713 voor Christus tot 294276 na Christus | 1microseconde / 14 cijfers |
Tijdstempel met tijdzone | 8 bytes | 4713 voor Christus tot 294276 na Christus | 1microseconde / 14 cijfers |
datum | 4 bytes | 4713 voor Christus tot 294276 na Christus | Op een dag |
Tijd zonder tijdzone | 8 bytes | 00:00:00 tot 24:00:00 | 1microseconde / 14 cijfers |
Tijd met tijdzone | 12 bytes | 00:00:00 + 1459 tot 24: 00: 00-1459 | 1microseconde / 14 cijfers |
Interval | 12 bytes | -178000000 tot 178000000 jaar | 1microseconde / 14 cijfers |
Voorbeelden:
Invoer | Omschrijving |
---|---|
2025-09-07 | ISO 8601, 7 september met elke datumstijl (aanbevolen formaat) |
7 september 2025 | 7 september met elke datumstijl |
7-9-2025 | 7 september met MDY, 9 juli met DMY |
07-09-25 | 7 september 2025, met MDY |
7 september 2025 | 7 september met elke datumstijl |
7 september 2018 | 7 september met elke datumstijl |
7-sep-25 | 7 september 2025, met YMD |
20250907 | ISO 8601,7 Sep 20225 in elke modus |
2025.250 | jaar en dag van het jaar, in dit geval 7 september 2025 |
J25250 | Juliaanse datum |
Tijd / tijd met tijdzone-invoer
Invoer | Omschrijving |
---|---|
11:19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 uur | Hetzelfde als 11:19 |
23:19 uur | hetzelfde als 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, hetzelfde als 23:19 EST |
23:19 EST | tijdzone gespecificeerd als EST, hetzelfde als 11:19 PM EST |
Booleaans type
Een Booleaans gegevenstype kan bevatten
- Klopt
- Vals
- nul
waarden.
U gebruikt een bool- of booleaans sleutelwoord om een kolom met het Booleaanse gegevenstype te declareren.
Wanneer u waarden invoegt in een booleaanse kolom, converteert Postgre waarden zoals
- Ja
- y
- 1
- t
- waar
in 1.
Terwijl waarden zoals
- Nee
- N
- 0
- F.
- Vals
worden geconverteerd naar 0
Tijdens het selecteren van gegevens worden de waarden weer geconverteerd naar ja, waar, y, enz.
Geometrische gegevenstypen
Geometrische gegevenstypen vertegenwoordigen tweedimensionale ruimtelijke objecten. Ze helpen bij het uitvoeren van bewerkingen zoals rotaties, schalen, vertalen, enz.
Naam | Opslaggrootte | Vertegenwoordiging | Omschrijving |
---|---|---|---|
Punt | 16 bytes | Wijs op een vliegtuig | (x, y) |
Lijn | 32 bytes | Oneindige lijn | ((xl.yl). (x2.y2)) |
Lseg | 32 bytes | Eindig lijnsegment | ((xl.yl). (x2.y2)) |
Doos | 32 bytes | Rechthoekige doos | ((xl.yl). (x2.y2)) |
Pad | 16n + 16n bytes | Sluit en open pad | ((xl.yl), ...) |
Veelhoek | 40 + 16n bytes | Veelhoek | [(xl.yl)….] |
Cirkel | 24 bytes | Cirkel | <(xy) .r> (middelpunt en straal) |
Opgesomde typen
Opgesomd PostgreSQL-gegevenstype is handig voor het weergeven van zelden veranderende informatie, zoals landcode of filiaal-ID. Het gegevenstype Enumerated wordt weergegeven in een tabel met externe sleutels om de gegevensintegriteit te waarborgen.
Voorbeeld:
Haarkleur is vrij statisch in een demografische database
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Bereik Type
Voor veel bedrijfstoepassingen zijn gegevens in bereiken nodig. Doorgaans worden twee kolommen (bijvoorbeeld: startdatum, einddatum) gedefinieerd om bereiken te behandelen. Dit is zowel inefficiënt als moeilijk te onderhouden.
Postgre heeft de volgende soorten assortimenten opgebouwd
- int4range - Toon bereik van gehele getallen
- int8range - Toon bereik van bigint
- numrange - Toont het numerieke bereik
- tstrange - Helpt u om een tijdstempel weer te geven zonder tijdzone
- vreemd - Hiermee kunt u het tijdstempel met de tijdzone weergeven
- datumbereik: datumbereik
UUID-type
Universeel uniek identificeert (UUID) is een 128-bits grootheid die wordt gegenereerd door een algoritme. Het is zeer onwaarschijnlijk dat dezelfde identificatie wordt gegenereerd door een andere persoon in de wereld die hetzelfde algoritme gebruikt. Daarom zijn deze ID's voor de gedistribueerde systemen een ideale keuze, omdat ze uniek zijn binnen een enkele database. Een UUID wordt geschreven als een groep kleine hexadecimale cijfers, met verschillende groepen gescheiden door koppeltekens.
PostgreSQL heeft een native UUID-gegevenstype dat 16 bytes aan opslagruimte verbruikt… UUID is een ideaal gegevenstype voor primaire sleutels.
Voorbeeld:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre accepteert ook alternatieve vormen van UUID-invoer, zoals hoofdletters, geen koppeltekens, accolades, enz.
XML-type
Met PostgreSQL kunt u XML-gegevens opslaan in een gegevenstype, maar het is niets meer dan een uitbreiding op een tekstgegevenstype. Maar het voordeel is dat het controleert of de invoer-XML goed is gevormd.
Voorbeeld:
XMLPARSE (DOCUMENT '') Data Type …
JSON-type
Om JSON-gegevens op te slaan, biedt PostgreSQL 2 gegevenstypen
- JSON
- JSONB
json | Jsonb |
---|---|
Een eenvoudige uitbreiding van een tekstgegevenstype met JSON-validatie | Een binaire weergave van de JSON-gegevens |
Invoegen is snel, maar het ophalen van gegevens is relatief traag. | Invoegen is traag maar selecteer (het ophalen van gegevens gaat snel) |
Slaat de ingevoerde gegevens precies op zoals het is, inclusief witruimte. | Ondersteunt indexering. Kan de witruimte optimaliseren om het ophalen sneller te laten verlopen. |
Herverwerking bij het ophalen van gegevens | Geen herverwerking vereist bij het ophalen van gegevens |
Het meest gebruikte JSON-gegevenstype gebruikte ons jsonb, tenzij er een gespecialiseerde behoefte is om het JSON-gegevenstype te gebruiken.
Voorbeeld:
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}');
Pseudo-typen
PostgreSQL heeft veel vermeldingen voor speciale doeleinden die pseudo-typen worden genoemd. U kunt geen pseudo-typen gebruiken als PostgreSQL-kolomtypen. Er worden gebruikt om het argument of het retourtype van de functie te declareren.
Elk van de beschikbare pseudo-typen is handig in situaties waarin het gedrag van een functie niet overeenkomt met het simpelweg nemen of retourneren van een waarde van een specifiek SQL-gegevenstype.
Naam | Omschrijving |
---|---|
Ieder | Functie accepteert alle invoergegevens. |
Een array | De functie accepteert elk array-gegevenstype. |
Elk element | De functie accepteert elk gegevenstype. |
Elke opsomming | De functie accepteert elk enum-gegevenstype. |
Nonarray | De functie accepteert elk niet-matrix gegevenstype. |
Cstring | Functie accepteert of retourneert een null-beëindigde C-tekenreeks. |
Intern | Interne functie accepteert of retourneert server-intern gegevenstype. |
Language_handler | Er wordt verklaard dat het de taalbehandelaar retourneert. |
Vermelding | Zoek een functie die een niet-gespecificeerd rijtype retourneert. |
Op gang brengen | Een triggerfunctie wordt gebruikt om de trigger terug te geven. |
Het is belangrijk dat de gebruiker die deze functie gebruikt, ervoor moet zorgen dat de functie zich veilig gedraagt wanneer een pseudo-type als argumenttype wordt gebruikt.
Praktische tips voor het gebruik van gegevenstypen
- Gebruik het gegevenstype "tekst", tenzij u de invoer wilt beperken
- Gebruik nooit "char."
- Gehele getallen gebruiken "int." Gebruik bigint alleen als je echt grote getallen hebt
- Gebruik bijna altijd "numeriek"
- Gebruik float in PostgreSQL als u een IEEE 754-gegevensbron heeft
Overzicht
- PostgreSQL biedt een uitgebreide set native gegevenstypen voor gebruikers
- PostgreSQL ondersteunt tekengegevenstypen voor het opslaan van tekstwaarden
- PostgreSQL ondersteunt twee verschillende soorten getallen: 1. Gehele getallen, 2. Drijvende-kommagetallen
- Een binaire string is een reeks bytes of octetten
- PostgreSQL heeft een netwerkadrestype om u te helpen de opslag van netwerkgegevens te optimaliseren
- Tekst zoeken PostgreSQL-gegevensstructuren zijn ontworpen om zoeken in volledige tekst te ondersteunen
- Datum / tijd PSQL-gegevenstypen maken datum- en tijdinformatie in verschillende formaten mogelijk
- Booleaanse Postgres-veldtypen kunnen drie waarden bevatten: 1. Waar 2. Onwaar 3. Null
- Geometrische PostgreSQL-gegevenstypen vertegenwoordigen tweedimensionale ruimtelijke objecten
- Opgesomde gegevenstypen in PostgreSQL zijn handig voor het weergeven van zelden veranderende informatie, zoals landcode of filiaal-ID
- Universeel uniek identificeert (UUID) is een 128-bits grootheid die wordt gegenereerd door een algoritme
- PostgreSQL heeft veel vermeldingen voor speciale doeleinden die pseudo-typen worden genoemd
- Het is het beste om het gegevenstype "tekst" te gebruiken, tenzij u de invoer wilt beperken