PostgreSQL - XML

Inhoudsopgave

PostgreSQL heeft ondersteuning voor een gegevenstype XMLHoewel dit voor ons erg nuttig kan zijn, is er vaak kritiek omdat dit kan leiden tot het overtreden van veel van de regels van relationele databases zoals normalisatie, hoewel dit niet heeft verhinderd dat alle stuurprogramma's en motoren van High-end databases ondersteuning bieden voor dit type Van de gegevens.

Gegevens in XML laden

Voordat we zien hoe het vanuit theoretisch oogpunt werkt, laten we een voorbeeld bekijken van hoe we een veld met dit type gegevens kunnen laden.

 INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml); 
Zoals we zien, is het tweede veld waarnaar we de invoeging maken het veld XML die we aanduiden door het te plaatsen :: xml aan het einde van de informatie die we willen invoegen.

De XML opvragen

Voor vragen over de XML we kunnen de functie gebruiken: xpad () aangezien het voor dit doel heel nuttig is, is het eerste argument dat het ontvangt een query van het XPath-type en het tweede een string die de XML bevat, is het antwoord een array van XML-objecten die voldoen aan de voorwaarden van de XPath-query. Laten we een voorbeeld bekijken van hoe dit te doen door het te combineren met de functie ontlasten () om de resultaten weer te geven alsof het rijen van een tabel zijn.

VERGROTEN

Laten we de genoemde punten opsplitsen:

1. We onderschrijven de array, aangezien XPath het retourneert altijd een array, zelfs als het een enkel element is dat in het antwoord op de query komt.

2. We verkrijgen het element tekst zowel in naam als in waarde van elk prop-element.

3. We gaan door de tags,,,, van de XML.

Zoals we kunnen zien, is het vrij eenvoudig om de query's uit te voeren om de waarden van de velden met XML-gegevenstype te verkrijgen.

Samengestelde en aangepaste gegevenstypen

Het type samengesteld object composiet is een speciaal type in PostgreSQL omdat het vaak wordt gebruikt om een ​​object te construeren en vervolgens wordt geassocieerd met een aangepast type of als de terugkeer van een functie die meerdere kolommen moet retourneren.

PostgreSQL maakt automatisch een aangepast type voor alle tabellen, voor elk doel kunnen we aangepaste typen gebruiken zoals die standaard zijn gedefinieerd in PostgreSQL, we kunnen zelfs een array van deze typen maken.

Laten we er een kleine code over bekijken:

 MAAK TABEL user_facts (user_id varchar (30) PRIMAIRE SLEUTEL, facts census.facts []);
Dan maken we een record aan:

 RIJ (86, '25001010206', 2012, 123, NULL) :: volkstelling.feiten
En tot slot voegen we het toe aan onze aangepaste tabel:

 INSERT INTO user_facts (user_id, facts) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]); 
We kunnen zelfs meer gegevens in ons type opnemen op de volgende manier met behulp van aaneenschakeling:

 UPDATE user_facts SET feiten = feiten || array (SELECT FROM census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe'; 
Wanneer we de query maken, zien we hoe alles logisch is, zoals in de volgende afbeelding:

VERGROTEN

Hiermee sluiten we deze tutorial over XML-gegevenstypen en aangepaste gegevenstypen af, zoals altijd is het de moeite waard om aan te bevelen de hier besproken onderwerpen op deze manier te oefenen om deze kennis zo vers mogelijk te houden voor uw toepassing.

wave wave wave wave wave