XML дуже популярний тип даних так як даними такого типу досить легко обмінюватися з безліччю різних додатків, тому програміст SQL повинен мати уявлення, про те, як зберігати ці дані і як їх обробляти на SQL.
Наприклад, в минулій статті про журнал змін даних таблиці ми зберігали старі і нові записи в простому текстовому вигляді, хоча могли використовувати для цього XML.
Отже, приступимо, для того щоб зберігати в таблиці тип даних XML для цього необхідно вибрати відповідний тип, він також називається xml. Запити будемо виконувати через Management Studio.
Як бачите все просто, ми створили таблицю, в якій два стовпи:
Id- ідентифікатор запису;
Xmldate - відповідно, якісь XML дані.
Тепер давайте запишемо туди що-небудь, для цього виконаємо простий запит insert
Тут ми просто в вручну розмітили xml документ і записали його в нашу таблицю. Для того щоб просто побачити дані в цій таблиці, xml відображається в читабельному вигляді, виконайте запит через оператор select:
Ви отримаєте дані види:
Функції Transact-sql для роботи з XML даними.
Дані функції називають методами, і почнемо ми з методу query.
Query - робить вибірку в самому xml документі, який зберігається в нашій таблиці, і приймає один параметр це рядок запиту до xml документу, тобто що саме ви хочете отримати з xml. Повертає також дані типу xml. Наприклад, вище ми створили таблицю кореневої тег catalog, а нам потрібно отримати тільки тег name, для цього виконайте наступний запит:
і у відповідь Ви отримаєте дані види:
Сподіваюся, сенс цього методу зрозумілий.
Далі розглянемо функцію modify.
Modify - як зрозуміло їх назви вона змінює дані xml. Приймає одні параметр це власне самі описано, як змінити xml документа. Використовується в конструкції update.
Приклади. Для видалення вузла використовуйте запит:
Тут ми видалили вузол lastname, для перевірки використовуйте запит select до даної таблиці.
Для вставки вузла використовуйте запит:
Тут ми додали вузол lastname назад в каталог. Для перевірки використовуйте той же самий запит select,
Для поновлення значення у вузлі використовуйте наступний запит:
Тут в першому вузлі name (ну він у нас один) змінили значення «Іван» на «Сергій».
Переходимо до методу value.
Value - повертає значення вузла. Дуже зручно використовувати, коли Ви хочете запитом одержати не xml документ, а його значення. Приймає два параметра, перший це звідки брати значення, а другий, який тип Ви при цьому хочете отримати.
Іноді потрібно запитом з таблиці ні з xml даними отримати дані xml, це теж можна зробити, наприклад, в наступному запиті ми записуємо в змінну типу XML рядок таблиці table з ідентифікатором 2, а потім просто отримаємо ці значення.
І ще один приклад для наочності (картинка нижче), він схожий на попередній, але в ньому ми просто підставляємо статичні дані.