PostgreSQL Gegevenstypen: Numeriek, Teken, Byte

โšก Slimme samenvatting

PostgreSQL Gegevenstypen definiรซren het soort waarde dat elke kolom kan opslaan, waaronder tekenreeks, numeriek, binair, datum en tijd, Booleaans, geometrisch, netwerk, UUID, XML en JSON. PostgreSQL Hiermee kunnen gebruikers ook aangepaste typen maken met het commando CREATE TYPE.

  • ๐Ÿ”ค Karaktertypen: CHAR, VARCHAR en TEXT slaan tekstwaarden op met een vaste, variabele en onbeperkte lengte.
  • ๐Ÿ”ข Numerieke typen: Gehele getallen en drijvende-kommawaarden variรซren van smallint tot bigint, plus exacte numerieke en decimale waarden.
  • ๐Ÿ•’ Datum en tijd: De gegevenstypen tijdstempel, datum, tijd en interval bieden een nauwkeurigheid van microseconden, met optionele tijdzones.
  • โœ… Booleaanse waarden en enumeraties: Booleaanse waarden bevatten de waarden waar, onwaar of null, terwijl opgesomde typen zelden veranderende, vaste verzamelingen modelleren.
  • ๐ŸŒ Gespecialiseerde typen: Netwerk-, geometrische, UUID-, XML-, JSON- en JSONB-formaten verwerken adressen, vormen, identificatoren en gestructureerde gegevens.
  • ๐Ÿ‘ Beste oefening: Gebruik bij voorkeur TEXT voor tekenreeksen en NUMERIC voor getallen, en maak alleen aangepaste gegevenstypen aan wanneer dat nodig is.

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
  • Tijdelijk
  • UUID
  • 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 Verkrijgbaarheid:
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 Grootte Beschrijving
cider 7 of 19 bytes IPv4 en IPv6 netwerken
Inet 7 of 19 bytes IPv4- en IPv6-hosts 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 Grootte Verkrijgbaarheid: 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 2025 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 uur 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),โ€ฆ)
Polygon 40 + 16n bytes Polygon [(xl.yl),โ€ฆ.]
Rond 24 bytes Rond <(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

Een Universally Unique Identifier (UUID) is een 128-bits getal dat wordt gegenereerd door een algoritme. Het is zeer onwaarschijnlijk dat dezelfde identifier door iemand anders ter wereld met hetzelfde algoritme wordt gegenereerd. Daarom zijn deze identifiers een ideale keuze voor gedistribueerde systemen, omdat ze uniciteit binnen รฉรฉn database garanderen. Een UUID wordt geschreven als een groep kleine hexadecimale cijfers, waarbij verschillende groepen worden gescheiden door koppeltekens.

PostgreSQL Het heeft een eigen UUID-datatype dat 16 bytes opslagruimte in beslag neemt. UUID is een ideaal datatype 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"], "onboarded": 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

Veelgestelde vragen

Numerieke (decimale) gegevens slaan exacte waarden op en zijn ideaal voor geld en precieze berekeningen. Zwevende-komma-gegevens (reรซel en decimaal) slaan benaderde waarden op met een snellere prestatie, maar met kleine afrondingsfouten. Vermijd deze gegevens daarom voor exacte financiรซle gegevens.

Ja. PostgreSQL Hiermee kan elke kolom een โ€‹โ€‹array van een basistype opslaan, zoals integer[] of text[]. Arrays zijn handig voor lijsten met waarden en kunnen worden doorzocht, geรฏndexeerd en ontdaan van geneste elementen in query's.

Gebruik het numerieke gegevenstype voor valuta, omdat dit exacte decimale waarden opslaat. Vermijd drijvende-komma-gegevenstypen, die afrondingsfouten introduceren. Er bestaat ook een speciaal gegevenstype voor geld, maar dit is minder flexibel voor gegevens met meerdere valuta.

AI kan uw voorbeeldgegevens analyseren en geschikte gegevenstypen aanbevelen, zoals numeriek voor geld of jsonb voor flexibele velden. Het legt de afwegingen uit op het gebied van opslag, precisie en prestaties, zodat u een weloverwogen beslissing kunt nemen.

Ja. AI kan gegevenstypen in kaart brengen vanuit MySQL, Oracle, of SQL Server naar hun PostgreSQL equivalenten en vlagverschillen, zoals TINYINT of NVARCHAR, helpenping u plant een soepelere databasemigratie.

Vat dit bericht samen met: