PostgreSQL - XML

Obsah

PostgreSQL má podporu pro datový typ XMLAčkoli to může být pro nás velmi užitečné, mnohokrát se objevuje kritika, protože to může vést k porušení mnoha pravidel relačních databází, jako je normalizace, ačkoli to nezabránilo tomu, aby všechny ovladače a motory z databází High-end poskytovaly podporu pro tento typ dat.

Načítání dat ve formátu XML

Než se podíváme, jak to funguje z teoretického hlediska, podívejme se na příklad, jak můžeme načíst pole s tímto typem dat.

 INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml); 
Jak vidíme, druhé pole, do kterého vložíme vložku, je pole XML které označujeme jeho umístěním :: xml na konci informací, které chceme vložit.

Dotazování na XML

Chcete -li se zeptat na XML můžeme použít funkci xpath () protože je pro tento účel docela užitečný, první argument, který obdrží, je dotaz typu XPath a druhý je řetězec, který obsahuje XML, odpověď je pole objektů XML, které splňují podmínky dotazu XPath. Podívejme se na příklad, jak to provést kombinací s funkcí unnest () aby se výsledky zobrazily, jako by to byly řádky tabulky.

ZVĚTŠIT

Pojďme rozebrat uvedené body:

1. Předplatíme pole, protože XPath vždy vrací pole, i když se jedná o jeden prvek, který přichází v odpovědi na dotaz.

2. Získáme prvek text jak názvem, tak hodnotou každého prvku prop.

3. Procházíme tagy ,,,,, XML.

Jak vidíme, je docela snadné provádět dotazy k získání hodnot polí s datovým typem XML.

Složené a vlastní datové typy

Typ složeného objektu kompozitní je speciální typ v PostgreSQL protože se často používá ke konstrukci objektu a pak je spojen s vlastním typem nebo jako návrat funkce, která potřebuje vrátit více sloupců.

PostgreSQL automaticky vytvoří vlastní typ pro všechny tabulky, pro jakýkoli účel můžeme použít vlastní typy, jako jsou ty, které jsou standardně definovány v PostgreSQL, můžeme dokonce vytvořit řadu těchto typů.

Podívejme se na to malý kód:

 VYTVOŘIT TABULKU user_facts (user_id varchar (30) PRIMARY KEY, fakta census.facts []);
Poté vytvoříme záznam:

 Řádek (86, '25001010206', 2012, 123, NULL) :: census.facts
A nakonec jej vložíme do naší vlastní tabulky:

 INSERT INTO user_facts (user_id, fact) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]); 
Můžeme dokonce začlenit více dat do našeho typu následujícím způsobem pomocí zřetězení:

 UPDATE user_facts NASTAVTE fakta = fakta || pole (SELECT F FROM census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe'; 
Poté při vytváření dotazu vidíme, jak vše dává smysl, jako na následujícím obrázku:

ZVĚTŠIT

Tímto dokončujeme tento návod k datovým typům XML a vlastním datovým typům, jako vždy stojí za to doporučit procvičování zde uvedených témat, aby byly tyto znalosti pro vaši aplikaci co nejčerstvější.

wave wave wave wave wave