PostgreSQL har stöd för en datatyp XMLÄven om detta kan vara mycket användbart för oss, finns det många gånger kritik eftersom det kan leda till att många av reglerna för relationsdatabaser som normalisering bryts, även om detta inte har hindrat alla drivrutiner och motorer från avancerade databaser att ge stöd för denna typ av data.
Läser in data i XML
Innan vi ser hur det fungerar ur en teoretisk synvinkel, låt oss se ett exempel på hur vi kan ladda ett fält med denna typ av data.
INSERT INTO web_sessions (session_id, session_state) VALUES ('robe', 'colorredbackgroundsnoopy' :: xml);När vi ser det andra fältet till vilket vi gör insatsen är fältet XML som vi betecknar genom att placera den :: xml i slutet av den information vi vill infoga.
Fråga XML
För att göra förfrågningar om XML vi kan använda funktionen xpath () eftersom det är ganska användbart för detta ändamål är det första argumentet det tar emot en fråga av typen XPath och den andra är en sträng som innehåller XML, svaret är en uppsättning XML -objekt som uppfyller villkoren för XPath -frågan. Låt oss se ett exempel på hur du gör detta genom att kombinera det med funktionen unnest () för att visa resultaten som om de vore rader i en tabell.
FÖRSTORA
Låt oss bryta ner de listade punkterna:
1. Vi prenumererar på matrisen sedan XPath det returnerar alltid en array även om det är ett enda element som kommer i svaret på frågan.
2. Vi får elementet text både i namn och värde för varje rekvisitelement.
3. Vi går igenom taggarna ,,,,, i XML.
Som vi kan se är det ganska enkelt att göra frågorna för att få värdena för fälten med XML -datatyp.
Sammansatta och anpassade datatyper
Typ av sammansatt objekt sammansatt är en speciell typ i PostgreSQL eftersom det ofta används för att konstruera ett objekt och sedan är det associerat med en anpassad typ eller som en retur för en funktion som måste returnera flera kolumner.
PostgreSQL skapar automatiskt en anpassad typ för alla tabeller, för alla ändamål kan vi använda anpassade typer som de som definieras som standard inom PostgreSQL, vi kan till och med göra en rad av dessa typer.
Låt oss se en liten kod om det:
SKAPA TABELL user_facts (user_id varchar (30) PRIMÄR KEY, fakta census.facts []);Sedan skapar vi en post:
RAD (86, '25001010206', 2012, 123, NULL) :: census.factsOch slutligen sätter vi in det i vårt anpassade bord:
INSERT INTO user_facts (user_id, facts) VALUES ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]);Vi kan till och med införliva mer data till vår typ på följande sätt med hjälp av sammanfogning:
UPDATE user_facts SET fakta = fakta || array (VÄLJ F FRÅN census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe';När vi gör frågan ser vi hur allt är vettigt som i följande bild:
FÖRSTORA
Med detta avslutar vi denna handledning om XML -datatyper och anpassade datatyper, som alltid är det värt att rekommendera att öva på ämnena som ses här på detta sätt för att hålla denna kunskap så fräsch som möjligt för din applikation.