PostgreSQL Gegevenstypen: byte, numeriek, teken, binair

PostgreSQL biedt een rijke set van native datatypes voor gebruikers. Gebruikers kunnen nieuwe types toevoegen met behulp van de CREATE TYPE-opdracht. Het maakt query's ook eenvoudiger en leesbaarder.

Gegevens typen in PostgreSQL

PostgreSQL ondersteunt de volgende gegevenstypen:

  • Teksttypen
  • Numerieke typen
  • Data en tijden
  • XML
  • JSON
  • Boolean
  • Bits
  • Binaire gegevens
  • Netwerk
  • arrays
  • Creëer uw gegevenstype
  • Boolean
  • Tijdelijk
  • UUID
  • reeks
  • JSON
  • Speciale gegevenstypen voor het opslaan van een netwerkadres en geometrische gegevens.

Laten we studeren PostgreSQL gegevenstypen in detail

Karakter datatypes

PostgreSQL ondersteunt tekengegevenstypen voor het opslaan van tekstwaarden. PostgreSQL bouwt karaktergegevenstypen op uit dezelfde interne structuren. PostgreSQL biedt drie tekengegevenstypen: CHAR(n), VARCHAR(n) en TEXT.

Naam Beschrijving
Varchar(n) Hiermee kunt u variabele lengte declareren met een limiet
Teken(n) Vaste lengte, blanco gewatteerd
Tekst Gebruik kan dit gegevenstype gebruiken om een ​​variabele met onbeperkte lengte te declareren

Numerieke gegevenstypen

PostgreSQL ondersteunt twee verschillende typen nummers:

  • integers
  • Drijvende-kommagetallen
Naam Winkelgrootte RANGE
kleintje 2 bytes -32768 te + 32767
geheel getal 4 bytes -2147483648 te + 2147483647
bigint 8 bytes -9223372036854775808 naar 9223372036854775807
decimale variabele Als u het als decimaal heeft aangegeven, varieert het datatype van 131072 cijfers vóór de komma tot 16383 cijfers na de komma
numerieke variabele Als u dit als getal declareert, kunt u een getal opnemen van maximaal 131072 cijfers vóór de komma tot 16383 cijfers na de komma
vast 4 bytes Precisie van 6 decimalen
verdubbelen 8 bytes Precisie van 15 decimalen

Binaire gegevenstypen

Een binaire string is een reeks octetten of bytes. Binaire Postgres-gegevenstypen zijn op twee manieren onderverdeeld.

  • Binaire strings maken het mogelijk om de odds van waarde nul op te slaan
  • Niet-afdrukbare octetten

Tekenreeksen staan ​​geen nul-octetten toe en staan ​​ook geen andere octetwaarden en reeksen toe die ongeldig zijn volgens de coderingsregels voor tekensets van de database.

Naam Opslag grootte Beschrijving
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 IP-adressen van gebruikers of sensoren. PostgreSQL heeft drie native typen die u helpen de netwerkgegevens te optimaliseren.

Naam Maat: Beschrijving
cider 7 of 19 bytes IPV4 en IPv6 netwerken
Inet 7 of 19 bytes IPV4- en IPV5-host en netwerken
macadr 6 bytes MAC-adressen

Het gebruik van netwerkadrestypen heeft de volgende voordelen

  1. Opslagruimtebesparend
  2. Controle van invoerfouten
  3. Functies zoals het zoeken naar gegevens op subnet

Tekstzoektype

PostgreSQL biedt twee gegevenstypen die zijn ontworpen om full-text search te ondersteunen. Full-text search is het doorzoeken van een verzameling documenten in natuurlijke taal om te zoeken naar de documenten die het beste bij een query passen.

  • Tsvector-tekst zoeken PostgreSQL variabeletypen vertegenwoordigen een document in een vorm die is geoptimaliseerd voor tekstzoeken
  • Bij het zoektype Tekst zoeken worden de trefwoorden opgeslagen waarop moet worden gezocht

Datum/tijd-gegevenstypen

PostgreSQL tijdstempel biedt precisie op microseconden in plaats van op seconden. Bovendien heb je ook de mogelijkheid om op te slaan met of zonder tijdzone. PostgreSQL zal bij invoer de tijdstempel met tijdzone naar UTC converteren en opslaan.

Datum- en tijdinvoer wordt geaccepteerd in verschillende formaten, waaronder traditioneel Postgres, ISO 8601. SQL-compatibel enz.

PostgreSQL ondersteunt dag-/maand-/jaarbestelling. Ondersteunde formaten zijn DMY, MDY, YMD

Tijdelijke gegevenstypen

Naam Maat: RANGE Resolutie
Tijdstempel zonder tijdzone 8 bytes 4713 voor Christus tot 294276 na Christus 1 microseconde/14 cijfers
Tijdstempel met tijdzone 8 bytes 4713 voor Christus tot 294276 na Christus 1 microseconde/14 cijfers
gegevens 4 bytes 4713 voor Christus tot 294276 na Christus Op een dag
Tijd zonder tijdzone 8 bytes 00:00:00 to 24:00:00 1 microseconde/14 cijfers
Tijd met tijdzone 12 bytes 00:00:00 + 1459 tot 24:00:00-1459 1 microseconde/14 cijfers
interval 12 bytes -178000000 tot 178000000 jaar 1 microseconde/14 cijfers

Voorbeelden

Invoer Beschrijving
2025-09-07 ISO 8601, 7 september met elke datumstijl (aanbevolen formaat)
7 september 2025 7 september met elke datumstijl
9/7/2025 7 september met MDY, 9 juli met DMY
9/7/25 7 september 2025, met MDY
2025-Sep-7 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 september 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 Beschrijving
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Hetzelfde als 11:19
11: 19 PM hetzelfde als 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, hetzelfde als 11:19 EST
23: 19 EST tijdzone gespecificeerd als EST, hetzelfde als 11:19 EST

Booleaans type

Een Booleaans gegevenstype kan geldig zijn

  • Waar
  • Niet waar
  • nul

waarden.

Je gebruikt een bool or boolean trefwoord om een ​​kolom met het Booleaanse gegevenstype te declareren.

Wanneer u waarden in een Booleaanse kolom invoegt, converteert Postgre waarden zoals

  • Ja
  • y
  • 1
  • t
  • waar

in 1.

Terwijl waarden als

  • Nee
  • N
  • 0
  • F
  • Niet waar

worden omgezet naar 0

Tijdens het selecteren van gegevens worden de waarden opnieuw omgezet naar ja, waar, y, enz.

Geometrische gegevenstypen

Geometrische gegevenstypen representeren tweedimensionale ruimtelijke objecten. Ze helpen bij het uitvoeren van bewerkingen zoals rotaties, schalen, translatie, etc.

Naam Opslaggrootte Vertegenwoordiging Beschrijving
punt 16 bytes Wijs op een vlak (x, y)
Lijn 32 bytes Oneindige lijn ((xl.yl ).(x2.y2))
Lseg 32 bytes Eindig lijnsegment ((xl.yl ).(x2.y2))
Box 32 bytes rechthoekig Box ((xl.yl ).(x2.y2))
Pad 16n + 16n bytes Sluit en open pad ((xl.yl),…)
Veelhoek 40 + 16n bytes Veelhoek [(xl.yl)….]
Circle 24 bytes Circle <(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 garanderen.

Voorbeeld

Haarkleur is tamelijk statisch in een demografische database

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

Opgesomde typen

Bereik Type

Veel zakelijke toepassingen vereisen gegevens binnen bepaalde bereiken. Normaal gesproken worden er twee kolommen (bijvoorbeeld: startdatum, einddatum) gedefinieerd om met bereiken om te gaan. Dit is zowel inefficiënt als moeilijk te handhaven.

Postgre heeft bereiktypen als volgt opgebouwd

  • int4range — Weergavebereik van geheel getal
  • int8range — Weergavebereik van bigint
  • numrange — Toont het numerieke bereik
  • tstrange — Helpt u bij het weergeven van een tijdstempel zonder tijdzone
  • vreemd — Hiermee kunt u een tijdstempel met tijdzone weergeven
  • datumbereik — Datumbereik

UUID-type

Universally Unique Identifying (UUID) is een 128-bits grootheid die wordt gegenereerd door een algoritme. Het is zeer onwaarschijnlijk dat dezelfde identificatie zal worden gegenereerd door een andere persoon in de wereld die hetzelfde algoritme gebruikt. Daarom zijn deze identificatiegegevens voor de gedistribueerde systemen een ideale keuze, omdat ze uniciteit bieden binnen een enkele database. Een UUID wordt geschreven als een groep hexadecimale cijfers in kleine letters, waarbij de verschillende groepen worden gescheiden door koppeltekens.

PostgreSQL heeft een native UUID-gegevenstype dat 16 bytes aan opslagruimte in beslag neemt. 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

PostgreSQL Hiermee 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 opgemaakt.

Voorbeeld

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

JSON-type

Om JSON-gegevens op te slaan PostgreSQL biedt 2 gegevenstypen

  1. JSON
  2. JSONB
json Jsonb
Een eenvoudige uitbreiding van een tekstgegevenstype met JSON-validatie Een binaire weergave van de JSON-gegevens
Het invoegen gaat snel, maar het ophalen van gegevens is relatief traag. Invoegen gaat langzaam, maar selecteren (het ophalen van gegevens gaat snel)
Slaat ingevoerde gegevens precies op zoals ze zijn, inclusief witruimte. Ondersteunt indexering. Kan de witruimte optimaliseren om het ophalen sneller te maken.
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-types worden genoemd. Je kunt geen pseudo-types gebruiken als PostgreSQL kolom typen. Er worden gebruikt om het argument of retourneringstype van de functie te declareren.

Elk van de beschikbare pseudo-types is nuttig in situaties waarin de gedragsdocumenten van een functie niet overeenkomen met het simpelweg aannemen of retourneren van een waarde van een specifieke waarde. SQL-gegevenstype.

Naam Beschrijving
Elke Functie accepteert alle soorten invoergegevens.
Een array De functie accepteert elk arraygegevenstype.
Elk element De functie accepteert elk gegevenstype.
Elke opsomming De functie accepteert elk enum-gegevenstype.
Niet-array De functie accepteert elk niet-array-gegevenstype.
C-snaar Functie accepteert of retourneert een op nul eindigende C-tekenreeks.
Intern De interne functie accepteert of retourneert het serverinterne gegevenstype.
Taal_handler Er wordt aangegeven dat het de taalhandler retourneert.
Record Zoek een functie die een niet-gespecificeerd rijtype retourneert.
Trigger Een triggerfunctie wordt gebruikt om trigger te retourneren.

Het is belangrijk dat de gebruiker die deze functie gebruikt ervoor moet zorgen dat de functie zich veilig gedraagt ​​wanneer een pseudotype als argumenttype wordt gebruikt.

Best practices met behulp 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

Samenvatting

  • PostgreSQL biedt een rijke set native gegevenstypen voor gebruikers
  • PostgreSQL ondersteunt tekengegevenstypen voor het opslaan van tekstwaarden
  • PostgreSQL ondersteunt twee verschillende typen getallen: 1. Gehele getallen, 2. Drijvendekommagetallen
  • 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 datastructuren 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. Nul
  • Geometrisch PostgreSQL gegevenstypen vertegenwoordigen tweedimensionale ruimtelijke objecten
  • Opgesomde gegevenstypen in PostgreSQL is handig voor het weergeven van zelden veranderende informatie, zoals landcode of filiaal-ID
  • Universally Unique Identifying (UUID) is een 128-bits grootheid die wordt gegenereerd door een algoritme
  • PostgreSQL heeft veel vermeldingen voor speciale doeleinden die pseudo-types worden genoemd
  • Het is het beste om het gegevenstype 'tekst' te gebruiken, tenzij u de invoer wilt beperken