„PostgreSQL“ palaiko duomenų tipą XMLNors tai mums gali būti labai naudinga, daug kartų sulaukiama kritikos, nes dėl to gali būti pažeistos daugelis santykių duomenų bazių taisyklių, pvz., Normalizavimas, nors tai netrukdė visiems tvarkyklėms ir varikliams naudotis aukščiausios klasės duomenų bazėmis. duomenų.
Įkeliami duomenys XML formatu
Prieš pamatydami, kaip tai veikia teoriniu požiūriu, pažiūrėkime pavyzdį, kaip galime įkelti lauką su tokio tipo duomenimis.
INSERT INTO web_sessions (session_id, session_state) VALUES ('chalatas', 'colorredbackgroundsnoopy' :: xml);Kaip matome, antrasis laukas, į kurį darome intarpą, yra laukas XML kurį žymime jį dėdami :: xml informacijos, kurią norime įterpti, pabaigoje.
XML užklausa
Norėdami paklausti apie XML funkciją galime naudoti xpath () kadangi tai yra gana naudinga šiam tikslui, pirmasis gautas argumentas yra XPath tipo užklausa, o antrasis - eilutė, kurioje yra XML, atsakymas yra XML objektų masyvas, atitinkantis XPath užklausos sąlygas. Pažiūrėkime pavyzdį, kaip tai padaryti derinant jį su funkcija unnest () kad rezultatai būtų rodomi tarsi lentelės eilutės.
DIDELIS
Išskaidykime išvardytus punktus:
1. Mes prenumeruojame masyvą, nes XPath jis visada grąžina masyvą, net jei jis yra vienas elementas, gaunamas atsakant į užklausą.
2. Gauname elementą tekstas kiekvieno pavadinimo elemento pavadinimu ir verte.
3. Mes einame per XML žymas ,,,,, “.
Kaip matome, gana lengva atlikti užklausas, kad gautumėte XML duomenų tipo laukų reikšmes.
Sudėtiniai ir pasirinktiniai duomenų tipai
Sudėtinio objekto tipas sudėtinis yra ypatingas tipas „PostgreSQL“ nes jis dažnai naudojamas objektui sukonstruoti ir tada yra susietas su pasirinktiniu tipu arba kaip funkcijos, kuriai reikia grąžinti kelis stulpelius, grąžinimas.
„PostgreSQL“ automatiškai sukuria pasirinktinį visų lentelių tipą, bet kokiu tikslu galime naudoti pasirinktinius tipus, tokius kaip tie, kurie pagal numatytuosius nustatymus yra nustatyti „PostgreSQL“, netgi galime sukurti šių tipų masyvą.
Pažiūrėkime nedidelį kodą apie tai:
KURTI LENTELĘ user_facts (user_id varchar (30) PIRMINIS RAKTAS, faktai census.facts []);Tada sukuriame įrašą:
ROW (86, '25001010206', 2012, 123, NULL) :: surašymo faktaiIr galiausiai įterpiame jį į savo pasirinktinę lentelę:
INSERT INTO user_facts (user_id, faktai) VALUES ('chalatas', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]);Mes netgi galime įtraukti daugiau duomenų į savo tipą tokiu būdu, naudodami sujungimą:
UPDATE user_facts SET faktai = faktai || masyvas (pasirinkite F iš census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'chalatas';Tada atlikdami užklausą matome, kaip viskas prasminga, kaip parodyta šiame paveikslėlyje:
DIDELIS
Šiuo klausimu, kaip visada, baigiame šį XML duomenų tipų ir pasirinktinių duomenų tipų vadovą, todėl rekomenduojame praktikuoti čia matomas temas taip, kad šios žinios būtų kuo naujesnės jūsų programai.