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
- Opslagruimtebesparend
- Controle van invoerfouten
- 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')
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
- JSON
- 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