PostgreSQL - XML

Cuprins

PostgreSQL are suport pentru un tip de date XMLDeși acest lucru ne poate fi foarte util, de multe ori există critici, deoarece acest lucru poate duce la încălcarea multor reguli ale bazelor de date relaționale, cum ar fi normalizarea, deși acest lucru nu a împiedicat toți driverele și motoarele din bazele de date de ultimă generație să ofere suport pentru acest tip. de date.

Se încarcă date în XML

Înainte de a vedea cum funcționează din punct de vedere teoretic, să vedem un exemplu despre cum putem încărca un câmp cu acest tip de date.

 INSERT INTO web_sessions (session_id, session_state) VALORI ('robe', 'colorredbackgroundsnoopy' :: xml); 
După cum vedem, al doilea câmp la care facem inserarea este câmpul XML pe care le notăm plasându-l :: xml la sfârșitul informațiilor pe care dorim să le inserăm.

Interogarea XML

Pentru a face anchete despre XML putem folosi funcția xpath () deoarece este destul de util în acest scop, primul argument pe care îl primește este o interogare de tip XPath iar al doilea este un șir care conține XML, răspunsul este o matrice de obiecte XML care îndeplinesc condițiile interogării XPath. Să vedem un exemplu de cum să faci acest lucru combinându-l cu funcția unnest () pentru a arăta rezultatele ca și cum ar fi rânduri ale unui tabel.

MARI

Să descompunem punctele enumerate:

1. Abonăm matricea, din moment ce XPath returnează întotdeauna o matrice, chiar dacă este un singur element care vine ca răspuns la interogare.

2. Obținem elementul text atât în ​​numele și valoarea fiecărui element de prop.

3. Trecem prin etichetele ,,,,, din XML.

După cum putem vedea, este destul de ușor să faceți interogări pentru a obține valorile câmpurilor cu tip de date XML.

Tipuri de date compozite și personalizate

Tipul de obiect compozit compozit este un tip special în PostgreSQL deoarece este adesea folosit pentru a construi un obiect și apoi este asociat cu un tip personalizat sau ca returnarea unei funcții care trebuie să returneze mai multe coloane.

PostgreSQL creează automat un tip personalizat pentru toate tabelele, în orice scop putem folosi tipuri personalizate, cum ar fi cele definite în mod implicit în PostgreSQL, putem chiar să realizăm o serie de astfel de tipuri.

Să vedem un mic cod despre asta:

 CREATE TABLE user_facts (user_id varchar (30) CHEIE PRIMARĂ, fapte recensământ.facts []);
Apoi creăm o înregistrare:

 ROW (86, '25001010206', 2012, 123, NULL) :: cens.facts
Și, în cele din urmă, îl inserăm în tabelul nostru personalizat:

 INSERT INTO user_facts (user_id, facts) VALORI ('robe', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]); 
Putem chiar să încorporăm mai multe date tipului nostru în modul următor folosind concatenare:

 ACTUALIZARE user_facts SET fapte = fapte || matrice (SELECT F Din recensământ.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'robe'; 
Atunci când facem interogarea, vedem cum totul are sens ca în imaginea următoare:

MARI

Cu aceasta încheiem acest tutorial despre tipurile de date XML și tipurile de date personalizate, ca întotdeauna, merită să recomandați practicarea subiectelor văzute aici în acest mod pentru a menține aceste cunoștințe cât mai proaspete pentru aplicația dvs.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave