PostgreSQL - XML

Innholdsfortegnelse

PostgreSQL har støtte for en datatype XMLSelv om dette kan være veldig nyttig for oss, er det mange ganger kritikk fordi dette kan føre til brudd på mange av reglene for relasjonsdatabaser som normalisering, selv om dette ikke har forhindret at alle drivere og motorer fra avanserte databaser gir støtte for denne typen av data.

Laster inn data i XML

Før vi ser hvordan det fungerer fra et teoretisk synspunkt, la oss se et eksempel på hvordan vi kan laste inn et felt med denne typen data.

 INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml); 
Som vi ser det andre feltet som vi gjør innsatsen til, er feltet XML som vi betegner ved å plassere den :: xml på slutten av informasjonen vi ønsker å sette inn.

Spør XML

For å gjøre forespørsler om XML vi kan bruke funksjonen xpath () siden det er ganske nyttig for dette formålet, er det første argumentet det mottar en spørring av typen XPath, og den andre er en streng som inneholder XML, svaret er en rekke XML -objekter som oppfyller betingelsene for XPath -spørringen. La oss se et eksempel på hvordan du gjør dette ved å kombinere det med funksjonen unnest () for å vise resultatene som om de var rader i en tabell.

FORSTØRRE

La oss bryte ned de listede punktene:

1. Vi abonnerer på matrisen siden XPath den returnerer alltid en matrise selv om det er et enkelt element som kommer i svaret på spørringen.

2. Vi får elementet tekst både i navn og verdi på hvert rekvisittelement.

3. Vi går gjennom kodene ,,,,, i XML.

Som vi kan se, er det ganske enkelt å gjøre spørsmålene for å få tak i verdiene til feltene med XML -datatype.

Sammensatte og tilpassede datatyper

Type sammensatt objekt sammensatte er en spesiell type i PostgreSQL fordi det ofte brukes til å konstruere et objekt, og deretter er det knyttet til en egendefinert type eller som retur av en funksjon som må returnere flere kolonner.

PostgreSQL oppretter automatisk en egendefinert type for alle tabeller, for ethvert formål vi kan bruke egendefinerte typer som de som er definert som standard i PostgreSQL, kan vi til og med lage en rekke av disse typene.

La oss se en liten kode om det:

 OPPRETT TABELL user_facts (user_id varchar (30) PRIMÆR NØKKEL, fakta census.facts []);
Deretter lager vi en rekord:

 RAD (86, '25001010206', 2012, 123, NULL) :: census.facts
Og til slutt setter vi det inn i vårt tilpassede bord:

 INSERT INTO user_facts (user_id, facts) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]); 
Vi kan til og med inkorporere flere data til vår type på følgende måte ved hjelp av sammenkopling:

 OPPDATER user_facts SET fakta = fakta || array (SELECT F FROM census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe'; 
Når vi gjør spørringen, ser vi hvordan alt er fornuftig som i følgende bilde:

FORSTØRRE

Med dette fullfører vi denne opplæringen om XML -datatyper og egendefinerte datatyper. Som alltid er det verdt å anbefale å praktisere emnene som er sett her på denne måten for å holde denne kunnskapen så fersk som mulig for applikasjonen din.

wave wave wave wave wave