PostgreSQL-gegevenstypen: teken - Numeriek - Binair - Boolean

Inhoudsopgave:

Anonim

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

  1. Opslagruimtebesparing
  2. Invoerfoutcontrole
  3. 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

  1. JSON
  2. 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