Dette kapitlet drøfter PostgreSQL datatyper. Mens du oppretter tabellen, for hver kolonne, angir du en datatype, dvs. hva slags data du ønsker å lagre i tabellfelt 
 
Dette gjør at flere fordeler:.
 
 
 < b> Konsistens: 
 operasjoner mot kolonner med samme datatype gi konsistente resultater og er vanligvis den raskeste 
 
 
  Validering:. 
 Riktig bruk av datatyper innebærer format validering av data og avvisning av data utenfor omfanget av datatype. 
 
 
  Kompakthet. 
 Som en kolonne kan lagre en enkelt type verdi, blir det lagret i en kompakt måte 
 
 
  Ytelse: 
 Riktig bruk av datatyper gir mest effektiv lagring av data. Verdiene som er lagret kan behandles raskt, noe som forbedrer ytelsen. 
 
 PostgreSQL støtter et bredt sett av datatyper. Dessuten kan brukerne lage sine egne datatype ved hjelp av  CREATE TYPE 
 SQL kommando. Det er forskjellige kategorier av datatyper i PostgreSQL. De er omtalt som følger: 
 
 Talltyper 
 
 Tall typene består av to-byte, fire-byte, og åtte-byte heltall, fire-byte og åtte-byte flyttall, og valgbar presisjon desimaler. Tabellen nedenfor viser de tilgjengelige typene. 
 
Storage Størrelse
Beskrivelse
smallint2 bytessmall-range heltall-32768 til + 32767integer4 bytestypical valg for heltall-2147483648 til + 2147483647bigint8 byteslarge-range heltall-9223372036854775808 til 9223372036854775807decimalvariableuser-spesifisert presisjon, exactup til 131072 sifre før decimalpoint; opp til 16383 siffer etter desimaltegnet pointnumericvariableuser-spesifisert presisjon, exactup til 131072 sifre før decimalpoint; opp til 16383 siffer etter desimaltegnet pointreal4 bytesvariable presisjon, inexact6 desimaltall siffer precisiondouble precision8 bytesvariable presisjon, inexact15 desimaltall siffer precisionsmallserial2 bytessmall autoincrementing Heltall1 til 32767serial4 bytesautoincrementing Heltall1 til 2147483647bigserial8 byteslarge autoincrementing Heltall1 to9223372036854775807
Penge Typer
  penger 
 type butikker et valutabeløp med en fast brøk presisjon. Verdier av  numerisk, int, og BIGINT 
 datatyper kan bli kastet til  penger 
. Ved hjelp av flyttall er ikke anbefalt å håndtere penger på grunn av potensialet for avrundingsfeil. 
 
tegn typer
 Tabellen nedenfor viser generelle karaktertyper tilgjengelig i PostgreSQL. 
 
Beskrivelse
karakter varierende (n ), varchar (n) variabel lengde med limitcharacter (n), røye (n) fast lengde, blank paddedtextvariable ubegrenset lengde
Binary datatyper
  BYTEA 
 datatype tillater lagring av binære strenger som i tabellen nedenfor. 
 Navn 
 
bytea1 eller 4 byte pluss selve binærstrenglengde binær streng
Dato /Tid Typer
 PostgreSQL støtter fullt sett med SQL dato og klokkeslett typer, som vist i tabellen nedenfor. Datoer telles i henhold til den gregorianske kalenderen. Her er alle typer har oppløsning på  1 mikrosekund /14 siffer 
 unntatt  dato 
 type, hvis oppløsningen er  dag 
. 
 
høy verdi
timestamp [(p)] [uten tidssone] 8 bytesboth dato og tid (ingen tidssone) 4713 BC294276 ADtimestamp [ ,,,0],(p)] med tiden zone8 bytesboth dato og klokkeslett, med tiden zone4713 BC294276 ADdate4 bytesdate (ingen tid på døgnet) 4713 BC5874897 ADtime [(p)] [uten tidssone] 8 bytestime av dagen (ingen dato) 00: 00: 0024 : 00: 00time [(p)] med tiden zone12 bytestimes av dagen bare, med tid zone00: 00: 00 + 145 924: 00: 00-1459interval [felt] [(p)] 12 bytestime intervall 178000000 years178000000 år
Boolean Type
 PostgreSQL gir standard SQL typen boolean. Den boolsk type kan ha flere stater.  sant 
,  false 
, og en tredje stat,  ukjent 
, som er representert ved SQL nullverdi 
 Name 
 
boolean1 bytestate av sant eller usant
oppregnet Type
 oppregnet (enum) typer er datatyper som utgjør en statisk, bestilte sett av verdier. De er likeverdige med de enum typene som støttes i en rekke programmeringsspråk. 
 
 I motsetning til andre typer, nummerert Typer må opprettes ved hjelp TYPE kommandoen CREATE. Denne typen brukes til å lagre en statisk, bestilte sett av verdier, for eksempel kompass retninger, dvs. nord, sør, øst og vest eller dager i uken som følger: 
 CREATE TYPE uke AS ENUM ('man', 'ti', 'ons', 'to', 'fre', 'Sat', 'Sun');. 
 Oppregnet gang skapt, kan de brukes som alle andre typer 
 
 Geometri type 
 
 Geometri datatypene representerer to-dimensjonale romlige stedene. Den mest grunnleggende typen, poenget, danner grunnlaget for alle de andre typene. 
 
Storage Størrelse
point16 bytesPoint på et plan (x, y) line32 bytesInfinite linje (ikke fullt implementert) ((x1, y1), (x2, y2)) lseg32 bytesFinite linjesegment ((x1, y1), (x2, y2)) box32 bytesRectangular boks (( x1, y1), (x2, y2)) path16 + 16n bytesClosed bane (tilsvarende polygon) ((x1, y1), ...) path16 + 16n bytesOpen bane [(x1, y1), ...] + polygon40 16nPolygon (tilsvarende lukket bane) ((x1, y1), ...) circle24 bytesCircle < (x, y), r > (midtpunkt og radius)
Network Address Type
 PostgreSQL tilbyr datatyper til å lagre IPv4, IPv6, og MAC-adresser. Det er bedre å bruke disse typene i stedet for rene teksttyper for å lagre nettverksadresser, fordi disse typene gi innspill feilsjekking og spesialiserte operatører og funksjoner. 
 
cidr7 eller 19 bytesIPv4 og IPv6 networksinet7 eller 19 bytesIPv4 og IPv6-verter og networksmacaddr6 bytesMAC adresser
Bit String Skriv
 Bit String typer brukes til å lagre bit masker. De er enten 0 eller 1. Det er to SQL bit typer:  bit (n) Hotell og  litt varierende (n) 
, der n er et positivt heltall 
 
. Tekst Søk Type 
 
 Denne typen støtter fulltekstsøk, som er aktiviteten til å søke gjennom en samling av naturlige språklige dokumenter for å finne de som passer best en spørring. Det er to datatyper for dette: 
 
tsvectorThis er en sortert liste over forskjellige ord som har blitt normalisert å slå sammen ulike varianter av samme ord, kalt som "lexemes ".tsqueryThis lagrer lexemes som skal søkes etter, og kombinerer dem hedre de boolske operatører og (AND), | (OR), og! (IKKE). Parentes kan brukes til å håndheve gruppering av operatørene.
UUID Skriv
 En UUID (universell unik identifikatorer) er skrevet som en sekvens av lavere-case heksadesimale sifre, i flere grupper atskilt med bindestrek, spesielt en gruppe på 8 siffer etterfulgt av tre grupper på 4 siffer fulgt av en gruppe av 12 sifre, for en total av 32 sifre som representerer de 128 bits. 
 
 Et eksempel på en UUID er:  550e8400-e29b-41d4-a716-446655440000 
 
 XML Skriv 
 
 xml datatypen kan brukes til å lagre XML-data. For lagring av XML-data, først du opprette XML-verdier ved hjelp av funksjonen xmlparse som følger: 
 XMLPARSE (DOKUMENT '< xml version = "1.0" > < tutorial > < title > PostgreSQL Tutorial < /title >? < temaer > ... < /emner > < /tutorial > ') XMLPARSE (INNHOLD' xyz < foo > Bar < /foo > < bar > foo < /bar > ') 
 JSON type 
 
  json 
 datatype kan brukes til å lagre JSON (Javascript Object Notation) data. Slike data kan også lagres som  tekst 
, men  json 
 datatype har fordelen av å sjekke at hver lagrede verdien er en gyldig JSON verdi. Det er også knyttet støttefunksjoner tilgjengelig som kan brukes direkte til å håndtere JSON datatype som følger: 
 
array_to_json('{{1,5},{99,100}}'::int[])[[1,5],[99,100]]row_to_json(row(1,'foo')){"f1":1,"f2":"foo"}
Array Skriv
 PostgreSQL gir mulighet til å definere en kolonne i en tabell som en variabel lengde flerdimensjonal array. Matriser med noen innebygd eller brukerdefinert basistype, enum type eller kompositt kan opprettes 
 
 Declaration of Arrays 
 
 Array typen kan bli erklært som:. 
 CREATE TABLE monthly_savings (navn tekst, saving_per_quarter heltall [], ordningen tekst [] []); 
 eller ved å bruke søkeordet "array" som: 
 CREATE TABLE monthly_savings (navn tekst, saving_per_quarter heltall Array [4], ordningen tekst [ ,,,0],] []); 
 Sette verdier 
 
 Array verdier kan settes inn som en bokstavelig konstant, muring elementverdier innenfor klammeparentes og skille dem med komma. Et eksempel er som følger: 
 INSERT INTO monthly_savingsVALUES ('Manisha', '{20000, 14600, 23500, 13250}', '{{"FD", "MF"}, {"FD", "Property"} }); 
 Tilgang Arrays 
 
 Et eksempel for å få tilgang Arrays er vist nedenfor. Kommandoen nedenfor vil velge personer som sparing er mer i andre kvartal enn fjerde kvartal 
 SELECT navn FROM monhly_savings HVOR saving_per_quarter [2] >.; saving_per_quarter [4]; 
 Endre Arrays 
 
 Et eksempel på å endre arrays er som vist nedenfor 
 UPDATE monthly_savings SET saving_per_quarter = {25000,25000,27000,27000} WHERE name = 'Manisha. '; 
 eller bruke ARRAY uttrykk syntaks: 
 UPDATE monthly_savings SET saving_per_quarter = array [25000,25000,27000,27000] WHERE name =' Manisha '; 
 Søker Arrays 
 
 Et eksempel for å lete arrays er som vist nedenfor 
 SELECT * FROM monthly_savings HVOR saving_per_quarter [1] = 10000 ORsaving_per_quarter [2] = 10000 ORsaving_per_quarter [3] = 10000 ORsaving_per_quarter [4] = 10000;. 
 Hvis størrelsen på matrisen er kjent fremfor søkemetode kan anvendes. Else, viser følgende eksempel hvordan du søker når størrelsen ikke er kjent 
 SELECT * FROM monthly_savings HVOR 10000 = ALLE (saving_per_quarter);. 
 Composite Typer 
 
 Denne typen representerer en liste over feltnavn og deres datatyper, dvs. strukturen i en rad eller registrering av et bord 
 
 Declaration of Composite Typer 
 
 Følgende eksempel viser hvordan å erklære en kompositt. 
 CREATE TYPE inventory_item AS (navn tekst, supplier_id heltall, pris numerisk); 
 Denne datatypen kan brukes i de lage tabeller som nedenfor: 
 CREATE TABLE on_hand (element inventory_item, telle heltall); 
 Composite Verdi Input Anmeldelser 
 Composite verdier kan settes inn som en bokstavelig konstant, omslutter feltverdiene innenfor parenteser og skille dem med komma. Et eksempel er som følger: 
 INSERT INTO on_hand VALUES (ROW ('fuzzy terningene', 42, 1,99), 1000); 
 Dette er gyldig for  inventory_item 
 definert ovenfor. Den ROW søkeordet er faktisk valgfritt, så lenge du har mer enn ett felt i uttrykket. 
 
 Tilgang Composite Typer 
 
For å få tilgang til et felt av en sammensatt kolonne, bruker et punktum etterfulgt av feltet navn, omtrent som å velge et felt fra en tabell navn. For eksempel vil velge noen subfields fra vårt on_hand eksempel bord, spørringen ville bli som vist nedenfor: SELECT (post) .name Fra on_hand HVOR (post) .price> 9,99;
 du kan også bruke navnet på tabellen også (for eksempel i et multitable spørring), som dette: SELECT (on_hand.item) .name Fra on_hand HVOR (on_hand.item) .price > 9.99; 
 treet Typer 
 
 treet typer representerer datatype som bruker en rekke data. Range typen kan være diskrete områder (f.eks verds alle heltall 1 til 10) eller kontinuerlig områder (f.eks enhver tid 10:00 til 11:00). 
 
 De innebygde range typer tilgjengelig inkluderer spenner: 
 
 
 int4range - Utvalg av heltall 
 
 
 int8range - Utvalg av bigint 
 
 
 Tallsøk - Utvalg av numerisk 
 
 
 tsrange - Utvalg av tidsstempel uten tidssone 
 
 
 tstzrange - Utvalg av tidsstempel med tidssone 
 
 < p> daterange - Range of date 
 
 egendefinert område typer kan bli opprettet for å lage nye typer serier tilgjengelig, for eksempel IP-adresseområder med inet type som en base, eller flyte områder bruker flottøren datatype som base. 
 
 treet typer støtter inkluderende og eksklusivt utvalg grenser ved hjelp av [] og () tegn, henholdsvis, for eksempel: "[4,9] 'representerer alle heltall fra og med 4 opp til, men ikke inkludert 9. 
 
 Object Identifier Typer 
 
 objektidentifikatorer (OIDer) brukes internt av PostgreSQL som primærnøkler for ulike systemtabeller. Hvis  MED OIDS 
 er spesifisert eller  default_with_oids 
 konfigurasjon variabel er aktivert, bare i slike tilfeller OIDer legges til brukeropprettede tabeller. Tabellen nedenfor viser flere alias typer. De OID alias typer har ingen operasjoner av sine egne unntak for spesialiserte input og output rutiner. 
 
Pseudo Typer
 PostgreSQL type system inneholder en rekke spesielle formål oppføringer som er kollektivt kalt pseudo-typer. En pseudo-type kan ikke brukes som en kolonne datatype, men den kan brukes til å erklære en funksjon anførsel resultat type. Tabellen nedenfor viser de eksisterende pseudo-typer. 
 
noen Angir at en funksjon aksepterer eventuelle inngangsdata type.anyelementIndicates at en funksjon aksepterer alle data type.anyarray indikerer at en funksjon aksepterer noen array-data type.anynonarrayIndicates at en funksjon aksepterer enhver ikke-matrise data type.anyenum Angir at en funksjon aksepterer noen enum data type.anyrangeIndicates at en funksjon aksepterer eventuelle utvalg data type.cstringIndicates at en funksjon aksepterer eller returnerer en null -terminated C string.internalIndicates at en funksjon aksepterer eller returnerer en server interne data type.language_handlerA prosedyrespråk samtale håndterer er erklært å returnere language_handler.fdw_handlerA utenlandsk-data wrapper håndterer er erklært å returnere fdw_handler.recordIdentifies en funksjon returnerer en uspesifisert radtype .triggerA trigger-funksjonen er erklært å returnere trigger.voidIndicates at en funksjon returnerer ingen verdi.

