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

14_XQuery.pptx

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

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

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/-71667949_349600898/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

Everyday Italian" src="https://present5.com/presentation/-71667949_349600898/image-4.jpg" alt="XML-документ • Everyday Italian" /> 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/-71667949_349600898/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/-71667949_349600898/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/-71667949_349600898/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/-71667949_349600898/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. Пример (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

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

1 • • • • SELECT xtab. name, xtab. subject, xtab. mark FROM departments, 1 • • • • SELECT xtab. name, xtab. subject, xtab. mark FROM departments, XMLTable('for $i in /department_list/department/student_list/student/mark_list/mark order by $i/. . /stud_name return

{$i/. . /stud_name} {$i/subject_name} {$i/value}

' PASSING data COLUMNS name varchar 2(50) PATH '/P 0/name' , subject VARCHAR 2(32) PATH '/P 0/subject' , mark number PATH '/P 0/mark') xtab • where id = 1

2 • • • • SELECT xtab. name, xtab. mark FROM departments, XMLTable('for $i 2 • • • • SELECT xtab. name, xtab. mark FROM departments, XMLTable('for $i in /department_list/department/student_list/student order by avg($i/mark_list/mark/value) return

{$i/stud_name} {avg($i/mark_list/mark/value)}

' PASSING data COLUMNS name varchar 2(50) PATH '/P 0/name' , mark number PATH '/P 0/mark') xtab • where id = 1

3 • • • SELECT xtab. name, xtab. subject FROM departments, XMLTable('for $i in 3 • • • SELECT xtab. name, xtab. subject FROM departments, XMLTable('for $i in /department_list/department, $j at $number in $i/student_list/student, $k in $j/mark_list/mark where $number = 1 order by $i/dep_name, $k/subject_name return

{$i/dep_name} {($k/subject_name)}

' PASSING data COLUMNS name varchar 2(50) PATH '/P 0/name' , subject varchar 2(50) PATH '/P 0/subject') xtab • where id = 1 • • •

4 • • • • select subject from subjects. On. Dep where name = 4 • • • • select subject from subjects. On. Dep where name = 'Analytical Information Systems' intersect select subject from subjects. On. Dep where name = 'Informatics' intersect select subject from subjects. On. Dep where name = 'Parallel algorithm' intersect select subject from subjects. On. Dep where name = 'System Programming'

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