PostgreSQL има поддръжка за тип данни XMLВъпреки че това може да бъде много полезно за нас, много пъти има критики, защото това може да доведе до нарушаване на много от правилата на релационните бази данни, като например нормализиране, въпреки че това не попречи на всички драйвери и двигатели от бази данни от висок клас да предоставят поддръжка за този тип на данни.
Зареждане на данни в XML
Преди да видим как работи от теоретична гледна точка, нека видим пример за това как можем да заредим поле с този тип данни.
INSERT INTO web_sessions (session_id, session_state) VALUES ('халат', 'colorredbackgroundsnoopy' :: xml);Както виждаме второто поле, в което правим вмъкването, е полето XML които обозначаваме, като го поставяме :: xml в края на информацията, която искаме да вмъкнем.
Запитване на XML
За да направите запитвания за XML можем да използваме функцията xpath () тъй като е доста полезен за тази цел, първият аргумент, който получава, е заявка от типа XPath, а вторият е низ, който съдържа XML, отговорът е масив от XML обекти, които отговарят на условията на заявката XPath. Нека да видим пример за това как да го направим, като го комбинираме с функцията нечестен () за да се покажат резултатите, сякаш са редове от таблица.
Увеличете
Нека разбием изброените точки:
1. Абонираме се за масива, тъй като XPath той винаги връща масив, дори ако това е единичен елемент, който идва в отговора на заявката.
2. Получаваме елемента текст както в името, така и в стойността на всеки елемент на опората.
3. Преминаваме през маркерите ,,,,, на XML.
Както виждаме, доста е лесно да се правят заявки за получаване на стойностите на полетата с XML тип данни.
Композитни и персонализирани типове данни
Типът на съставен обект композитен е специален тип в PostgreSQL тъй като често се използва за конструиране на обект и след това се свързва с персонализиран тип или като връщане на функция, която трябва да върне множество колони.
PostgreSQL автоматично създава персонализиран тип за всички таблици, за всякакви цели можем да използваме персонализирани типове, като тези, определени по подразбиране в PostgreSQL, дори можем да направим масив от тези типове.
Нека да видим малко код за това:
СЪЗДАВАНЕ НА ТАБЛИЦА user_facts (user_id varchar (30) PRIMARY KEY, факти препис.факти []);След това създаваме запис:
ROW (86, '25001010206', 2012, 123, NULL) :: перепис.фактиИ накрая го вмъкваме в нашата персонализирана таблица:
INSERT INTO user_facts (user_id, факти) VALUES ('халат', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]);Дори можем да включим повече данни към нашия тип по следния начин, използвайки конкатенация:
UPDATE user_facts SET факти = факти || масив (SELECT F FROM popis.факти AS F WHERE факт_тип_id = 86) WHERE user_id = 'халат';След това, когато правите заявката, виждаме как всичко има смисъл, както на следното изображение:
Увеличете
С това завършваме този урок за XML типове данни и персонализирани типове данни, както винаги, си струва да препоръчате да практикувате видяните тук теми по този начин, за да запазите тези знания възможно най -свежи за вашето приложение.