Скачать презентацию XQuery Графеева Н Г 2017 XQuery Скачать презентацию XQuery Графеева Н Г 2017 XQuery

15 XQuery.pptx

  • Количество слайдов: 32

XQuery Графеева Н. Г. 2017 XQuery Графеева Н. Г. 2017

XQuery • XQuery - это язык, ориентированный на выборку XML данных • XQuery для XQuery • XQuery - это язык, ориентированный на выборку XML данных • XQuery для XML-структур подобен SQL для реляционных баз данных • XQuery основан на XPath-выражениях • XQuery поддерживается всеми основными производителями систем, управляющих базами данных • XQuery рекомендован к использованию консорциумом W 3 C

30 order by $x/title return $x/title" src="https://present5.com/presentation/-152754518_453819580/image-3.jpg" alt="Пример • for $x in doc("books. xml")/bookstore/book where $x/price>30 order by $x/title return $x/title" /> Пример • for $x in doc("books. xml")/bookstore/book where $x/price>30 order by $x/title return $x/title

XML-документ (для примеров) • Everyday Italian Giada De Laurentiis 2005 30. 00 Harry Potter J K. Rowling 2005 29. 99 XQuery Kick Start James Mc. Govern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49. 99 Learning XML Erik T. Ray 2003 39. 95

Основы синтаксиса XQuery • XQuery - case-sensitive • Элементы XQuery должны быть правильными XML-именами Основы синтаксиса XQuery • XQuery - case-sensitive • Элементы XQuery должны быть правильными XML-именами (valid) • XQuery-строки можно заключать в двойные или одиночные кавычки • Переменные XQuery начинаются с символа $, за которым следует имя xml-элемента, например: $bookstore • Комментарии XQuery выделяются двоеточием, например: (: XQuery Comment : )

Как открыть XML-документ? • doc() - открывает весь документ • Пример использования: • doc( Как открыть XML-документ? • doc() - открывает весь документ • Пример использования: • doc("books. xml")/bookstore/book/title • Результат: • Everyday Italian Harry Potter XQuery Kick Start Learning XML

" src="https://present5.com/presentation/-152754518_453819580/image-7.jpg" alt=" • Пример использования (с предикатом): • doc("books. xml")/bookstore/book[price<30] • Результат: • " /> • Пример использования (с предикатом): • doc("books. xml")/bookstore/book[price<30] • Результат: • Harry Potter J K. Rowling 2005 29. 99

FLWOR -конструкции • FLWOR - FLWOR -конструкции • FLWOR - "For, Let, Where, Order by, Return" • for – задает переменную для цикла • let – присваивание секвенции • where – задает фильтр для выбираемых данных • order by – указывает порядок сортировки • return – указывает выбираемые значения

30" src="https://present5.com/presentation/-152754518_453819580/image-9.jpg" alt="Пример (for clause, order by) XMLQuery Результат for $x in doc("books. xml")/bookstore/book where $x/price>30" /> Пример (for clause, order by) XMLQuery Результат for $x in doc("books. xml")/bookstore/book where $x/price>30 order by $x/title return $x/title Learning XML XQuery Kick Start

Пример (for clause) XQuery • for $x in (1 to 5) return <test>{$x}</test> Результат Пример (for clause) XQuery • for $x in (1 to 5) return {$x} Результат • 1 2 3 4 5

{$i}." src="https://present5.com/presentation/-152754518_453819580/image-11.jpg" alt="Пример (for clause) XQuery Результат for $x at $i in doc("books. xml")/bookstore/book/title return {$i}." /> Пример (for clause) XQuery Результат for $x at $i in doc("books. xml")/bookstore/book/title return {$i}. {data($x)}1. Everyday Italian 2. Harry Potter 3. XQuery Kick Start 4. Learning XML

Пример (for clause) XQuery • for $x in (10, 20), $y in (100, 200) Пример (for clause) XQuery • for $x in (10, 20), $y in (100, 200) return x={$x} and y={$y} Результат • x=10 and y=100 x=10 and y=200 x=20 and y=100 x=20 and y=200

Пример (let clause) XQuery Результат • let $x : = (1 to 5) return Пример (let clause) XQuery Результат • let $x : = (1 to 5) return {$x}1 2 3 4 5

Пример (let clause + concatenation) XQuery Результат • let $x : = (1 to Пример (let clause + concatenation) XQuery Результат • let $x : = (1 to 5), (3 to 7) return {$x} 1 2 3 4 5 6 7

Пример (let clause + union) XQuery Результат let $x : = (1 to 5) Пример (let clause + union) XQuery Результат let $x : = (1 to 5) union (3 to 7) return {$x} 1 2 3 4 5 6 7

Пример (let clause + intersect) XQuery Результат let $x : = (1 to 5) Пример (let clause + intersect) XQuery Результат let $x : = (1 to 5) intersect (3 to 7) return {$x} 3 4 5

Пример (let clause + except) XQuery Результат let $x : = (1 to 5) Пример (let clause + except) XQuery Результат let $x : = (1 to 5) except (3 to 7) return {$x} 1 2

Пример (let clause + reverse function) XQuery Результат let $x : = reverse((1 to Пример (let clause + reverse function) XQuery Результат let $x : = reverse((1 to 5)) return {$x} 5 4 3 2 1

Пример (data function) XMLQuery Результат for $x in doc( Пример (data function) XMLQuery Результат for $x in doc("books. xml")/bookstore/book/title order by $x return {data($x)} Everyday Italian Harry Potter Learning XML XQuery Kick Start

Пример (distinct-values function) XMLQuery Результат for $x in doc( Пример (distinct-values function) XMLQuery Результат for $x in doc("books. xml")/bookstore/book/year order by $x descending return {distinct-values(data($x))} 2005 2003

Агрегатные функции • • • min max avg count sum Агрегатные функции • • • min max avg count sum

{count($x)} {avg($x/price)} " src="https://present5.com/presentation/-152754518_453819580/image-22.jpg" alt="Пример XMLQuery Результат let $x : = doc("books. xml")/bookstore/book return {count($x)} {avg($x/price)} " /> Пример XMLQuery Результат let $x : = doc("books. xml")/bookstore/book return {count($x)} {avg($x/price)} 4 37. 4825

Условный оператор (if – then-else) XMLQuery Результат for $x in doc( Условный оператор (if – then-else) XMLQuery Результат for $x in doc("books. xml")/bookstore/book return if ($x/@category="CHILDREN") then {data($x/title)} else {data($x/title)}Everyday Italian Harry Potter Learning XML XQuery Kick Start

Пример (добавление HTML) XMLQuery Результат <html> <body> <h 1>Bookstore</h 1> <ul> { for $x Пример (добавление HTML) XMLQuery Результат Bookstore

    { for $x in doc("books. xml")/bookstore/book order by $x/title return
  • {data($x/title)}. Category: {data($x/@category)}
  • }
Bookstore
  • Everyday Italian. Category: COOKING
  • Harry Potter. Category: CHILDREN
  • Learning XML. Category: WEB
  • XQuery Kick Start. Category: WEB

Пример (XQuery + ORACLE) • • • • SELECT xtab. count, xtab. firstname, xtab. Пример (XQuery + ORACLE) • • • • SELECT xtab. count, xtab. firstname, xtab. lastname FROM employees, XMLTable('for $i at $count in /Employees/Employee return

{$count} {$i/firstname} {$i/lastname}

' PASSING data COLUMNS count number PATH '/P 0/count' , firstname VARCHAR 2(32) PATH '/P 0/firstname' , lastname VARCHAR 2(32) PATH '/P 0/lastname') xtab where id = 1

Пример (XQuery + ORACLE) • • SELECT xtab. count, xtab. firstname, xtab. lastname FROM Пример (XQuery + ORACLE) • • SELECT xtab. count, xtab. firstname, xtab. lastname FROM employees, XMLTable('for $i at $count in /Employees/Employee order by $i/lastname • • • return

{$count} {$i/lastname} {$i/firstname}

' PASSING data COLUMNS count number PATH '/P 0/count' , lastname VARCHAR 2(32) PATH '/P 0/lastname' , firstname VARCHAR 2(32) PATH '/P 0/firstname') xtab • where id = 1

Пример(XQuery + ORACLE) • • SELECT xtab. count FROM employees, XMLTable('let $i : = Пример(XQuery + ORACLE) • • SELECT xtab. count FROM employees, XMLTable('let $i : = /Employees/Employee return

{count($i)}

' PASSING data COLUMNS count number PATH '/P 0/count' ) xtab WHERE id = 1

Задание 12(5) • Загрузите в свою схему xml-документ с названиями кафедр, заведующими, студентами, предметами, Задание 12(5) • Загрузите в свою схему xml-документ с названиями кафедр, заведующими, студентами, предметами, отметками. • Создайте приложение с отчетами, в которых будут выведены: • 1)фамилии студентов и все отметки (список должен быть упорядочен по фамилиям студентов); 2)фамилии студентов и средние баллы (список должен быть упорядочен по среднему баллу); 3)все названия предметов, которые читаются на различных IT кафедрах (список должен быть упорядочен по кафедрам, а затем по названиям предметов); 4)названия предметов, которые читаются на каждой IT кафедре (т. е. пересечение). • • Ссылку на приложение с отчетами отправьте по адресу: N. Grafeeva@spbu. ru Тема - DB_Applcation_2017_job 12 Примечание: задание должно быть отправлено в течение 14 дней. За более позднее отправление будут сниматься штрафные баллы ( по баллу за каждые две недели).

Полезные ссылки • http: //www. w 3 schools. com/xqury Полезные ссылки • http: //www. w 3 schools. com/xqury