PostgreSQL - XML

Indholdsfortegnelse

PostgreSQL har understøttelse af en datatype XMLSelvom dette kan være meget nyttigt for os, er der mange gange kritik, fordi dette kan føre til brud på mange af reglerne for relationelle databaser såsom normalisering, selvom dette ikke har forhindret alle drivere og motorer fra avancerede databaser til at understøtte denne type af data.

Indlæser data i XML

Før vi ser, hvordan det fungerer fra et teoretisk synspunkt, lad os se et eksempel på, hvordan vi kan indlæse et felt med denne type data.

 INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml); 
Som vi ser det andet felt, som vi laver indsatsen til, er feltet XML som vi betegner ved at placere den :: xml i slutningen af ​​de oplysninger, vi ønsker at indsætte.

Forespørgsel efter XML

For at stille spørgsmål om XML vi kan bruge funktionen xpath () da det er ganske nyttigt til dette formål, er det første argument, det modtager, en forespørgsel af XPath -typen, og det andet er en streng, der indeholder XML, svaret er en række XML -objekter, der opfylder betingelserne for XPath -forespørgslen. Lad os se et eksempel på, hvordan du gør dette ved at kombinere det med funktionen unnest () for at vise resultaterne som om de var rækker i en tabel.

FORSTØRRE

Lad os bryde de anførte punkter op:

1. Vi abonnerer på arrayet, siden XPath det returnerer altid en matrix, selvom det er et enkelt element, der kommer i svaret på forespørgslen.

2. Vi får elementet tekst både i navn og værdi på hvert propelement.

3. Vi går igennem tags ,,,,, i XML.

Som vi kan se, er det ganske let at foretage forespørgslerne for at få værdierne for felterne med XML -datatype.

Sammensatte og tilpassede datatyper

Typen af ​​sammensat objekt sammensatte er en særlig type i PostgreSQL fordi det ofte bruges til at konstruere et objekt, og derefter er det forbundet med en brugerdefineret type eller som returnering af en funktion, der skal returnere flere kolonner.

PostgreSQL opretter automatisk en brugerdefineret type til alle tabeller, til ethvert formål kan vi bruge brugerdefinerede typer som dem, der er defineret som standard inden for PostgreSQL, vi kan endda lave en matrix af disse typer.

Lad os se en lille kode om det:

 OPRET TABEL user_facts (user_id varchar (30) PRIMÆR NØGLE, fakta census.facts []);
Derefter opretter vi en rekord:

 RÆKKE (86, '25001010206', 2012, 123, NULL) :: census.facts
Og endelig indsætter vi det i vores brugerdefinerede tabel:

 INSERT INTO user_facts (user_id, facts) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]); 
Vi kan endda inkorporere flere data til vores type på følgende måde ved hjælp af sammenkædning:

 OPDATER user_facts SET facts = facts || array (SELECT F FRA census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe'; 
Når vi laver forespørgslen, ser vi, hvordan alt giver mening som i følgende billede:

FORSTØRRE

Med dette afslutter vi denne vejledning om XML -datatyper og brugerdefinerede datatyper, som altid er det værd at anbefale at øve de emner, der ses her, på denne måde for at holde denne viden så frisk som muligt til din applikation.

wave wave wave wave wave