ПостгреСКЛ има подршку за тип података КСМЛИако нам ово може бити од велике користи, много пута постоје критике јер то може довести до кршења многих правила релацијских база података, попут нормализације, иако то није спријечило све управљачке програме и моторе да врхунске базе података пруже подршку за ову врсту података.
Учитавање података у КСМЛ
Пре него што видимо како то функционише са теоретске тачке гледишта, погледајмо пример како можемо учитати поље са овом врстом података.
ИНСЕРТ ИНТО веб_сессионс (сессион_ид, сессион_стате) ВАЛУЕС ('робе', 'цолорредбацкгроундсноопи' :: кмл);Као што видимо, друго поље у које уносимо је поље КСМЛ које означавамо постављањем :: кмл на крају информација које желимо да уметнемо.
Упити у КСМЛ
Да бисте се распитали о КСМЛ можемо користити функцију кпатх () будући да је у ту сврху прилично користан, први аргумент који прима је упит типа КСПатх, а други низ који садржи КСМЛ, одговор је низ КСМЛ објеката који испуњавају услове КСПатх упита. Погледајмо пример како то учинити комбиновањем са функцијом уннест () како би се резултати приказали као да су редови табеле.
ЕНЛАРГЕ
Хајде да разложимо наведене тачке:
1. Претплаћујемо се на низ, од КСПатх увек враћа низ чак и ако се ради о једном елементу који долази у одговору на упит.
2. Добијамо елемент текст и по имену и по вредности сваког елемента подупирача.
3. Пролазимо кроз ознаке ,,,,, КСМЛ -а.
Као што видимо, прилично је лако извршити упите за добијање вредности поља са КСМЛ типом података.
Сложени и прилагођени типови података
Тип сложеног објекта композитни је посебан тип у ПостгреСКЛ јер се често користи за конструисање објекта, а затим је повезан са прилагођеним типом или као повратак функције која треба да врати више колона.
ПостгреСКЛ аутоматски ствара прилагођени тип за све табеле, у било коју сврху можемо користити прилагођене типове, попут оних који су подразумевано дефинисани у ПостгреСКЛ -у, чак можемо направити и низ ових типова.
Погледајмо мали код о томе:
ЦРЕАТЕ ТАБЛЕ усер_фацтс (усер_ид варцхар (30) ПРИМАРНИ КЉУЧ, попис података.фацтс []);Затим стварамо запис:
РОВ (86, '25001010206', 2012, 123, НУЛЛ) :: ценсус.фацтсИ на крају га убацујемо у нашу прилагођену табелу:
ИНСЕРТ ИНТО усер_фацтс (усер_ид, валуес) ВАЛУЕС ('огртач', АРРАИ [РОВ (86, '25001010206', 2012, 123, НУЛЛ) :: ценсус.фацтс]);Чак можемо уврстити више података у наш тип на следећи начин помоћу спајања:
УПДАТЕ усер_фацтс СЕТ чињенице = чињенице || низ (СЕЛЕЦТ Ф ФРОМ попис. факти АС Ф ВХЕРЕ фацт_типе_ид = 86) ВХЕРЕ усер_ид = 'робе';Тада приликом постављања упита видимо како све има смисла као на следећој слици:
ЕНЛАРГЕ
Овим завршавамо овај водич о КСМЛ типовима података и прилагођеним типовима података, као и увек, вреди препоручити вежбање тема које се овде виде на овај начин како би ово знање било што свежије за вашу апликацију.