XQuery (2ª parte) Helena Galhardas DEI IST (baseado nos slides de Ioana Manolescu, acessíveis em:

Slides:



Advertisements
Apresentações semelhantes
Python: Funções Claudio Esperança.
Advertisements

O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Object Query Language - OQL
Introdução Marcus Vinícius Carneiro Teixeira.
Álgebra Relacional Marcelo Mendes Manaus
Banco de Dados Prof. Antonio.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
SQL Structured Query Language (continuação)
Banco de Dados Bruno Rafael de Oliveira Rodrigues.
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531 – 7555.
XQuery (1ª parte) Helena Galhardas DEI IST
XQuery Update Gestão e Tratamento da Informação DEI IST
Objectivos Objectivos
XSLT e recursividade estrutural
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
SQL – Comandos de Agregação
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Subconsultas ou Consultas Aninhadas
SQL – Consultas Básicas
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
SQL – DML Consultas envolvendo relacionamentos entre tabelas
SQL – DML Consulta a dados de uma tabela
Ordenação de Resultados
Operadores Especiais da SQL
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
Material III-Bimestre Wagner Santos C. de Jesus
Banco de dados Profª Kelly Medeiros.
Query Tuning Lílian Simão Oliveira.
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Monitoria GDI Aula Prática
Terceiro Trabalho Prático de GTI
SQL Server 2012 Tipos de Dados e Tabelas
SQL Álvaro Vinícius de Souza Coêlho
Linguagens de interrogação de dados XML XPath
Cronograma Formato do Comando SELECT – 1ª Seção Uso de Funções (DATE_FORMAT, DAY, MONTH, NOW, CONCAT, FORMAT, COUNT, AVG, MAX, MIN e FORMAT) AS DISTINCT.
BANCO DE DADOS UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Design Patterns / Acesso ao banco de dados (java.sql)
Banco de Dados Aplicado ao Desenvolvimento de Software
Especialização em Tecnologia da Informação
Estudo de Caso: um editor de documentos
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
Desenvolvendo um script SQL
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros waelson.com.br “Está conosco o Senhor dos Exércitos”
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Treinamento SQL Server
Banco de Dados I I Comandos SQL
Produção de Sites Unidade 9 – XML Prof.: Henrique Santos.
Linguagem SQL Prof. Juliano.
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
©Silberschatz, Korth and Sudarshan (modificado)9.2.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
XML Namespaces XML Namespaces provê um método para evitar conflito de nomes de elementos.
XSLT e recursividade estrutural Helena Galhardas DEI IST.
Consultando Documentos XML com XQUERY Vânia Maria Ponte Vidal
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
SQL SERVER XML Guia Essencial para Programação com XML no SQL Server.
Daniel Paulo Funções de cadeia de caracteres LEN – Conta os caracteres de uma string SELECT LEN(‘BRASIL’) REPLICATE – Repete.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Recuperação de Dados Banco de Dados Carina Farias
VBA – Visual Basic para Aplicativos
UCSal – Bacharelado em Informática
Linguagem de definição de dados - SQL
SELECT Professor: Virgílio Fries Müller www. vfm.com.br
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
José Antônio da Cunha 2/6/2016 José Antônio - CEFET-RN 1 Disciplina: Banco de Dados.
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Transcrição da apresentação:

XQuery (2ª parte) Helena Galhardas DEI IST (baseado nos slides de Ioana Manolescu, acessíveis em: )

Agenda Formulação de interrogações Expressões FLOWR

Sumário das expressões FLWOR

Claúsula order by Permite uma ou mais especificações de ordem, em que cada uma especifica uma expressão usada para ordenar os tuplos Exemplo: for $a in doc(books.xml)//author order by $a/last descending, $a/first descending return $a

Collations Especifica o modo como as cadeias de caracteres são comparadas e, consequentemente, ordenadas Exemplo: A seguinte interrogação ordena os títulos usando uma collation do Inglês dos EUA for $t in doc(books.xml)//title order by $t collation return $t Nota: A maior parte das interrogações usam a mesma collation para todas as especificações de ordenação

Junções As expressões FLOWR tornam mais fácil expressar junções sobre documentos a la SQL. Exemplo: for $p in document("taxpayers.xml")//person for $n in document("neighbors.xml")//neighbor where $n/ssn = $p/ssn return { $p/ssn } { $n/ name } { $p/ income } Nota: A condição de junção pode ser expressa como um predicado XPath no segundo for ou na claúsula where.

(Left) outer-join Exemplo: Obter o título de cada livro, independentemente se ele tem uma revisão associada. Se o livro tem uma revisão associada, então as notas encontradas na revisão são retornadas for $t in doc(books.xml)//title return { $t } { for $e in doc(reviews.xml)//entry where $e/title = $t return $e/remarks }

Junção e agrupamento Exemplo: Obter a lista dos departamentos com mais do que 10 empregados, ordenados pela média dos salários. for $d in document("depts.xml")//deptno let $e:=document("emps.xml")//employee[deptno =$d] where count($e) >= 10 order by avg($e/salary) descending return { $d, { count($e) }, { avg($e/salary) } } Nota: A construção {e1,e2, ···,en} é equivalente a: {concat(e1,e2, ···,en)}.

Operações sobre listas XQuery suporta operadores para manipular listas: 1. Concatenação 2. Operações de conjunto: união, intersecção, diferença 3. Funções: remove(), index-of (), count(), avg(), min(), max(), etc. Exemplo: Para cada editor, retorne o seu nome e o seu preço médio de livros. for $p in distinct-values(document("bib.xml")//publisher) let $a := avg (document("bib.xml")//book[publisher=$p]/price ) return { $p/text() } { $a }

União, intersecção e diferença Combinam sequências de nós: cada um destes operadores combina duas sequências, e retorna uma sequência resultado pela ordem do documento. Exemplo: let $l := distinct- values(doc(books.xml)//(author|editor)/last) order by $l return { $l } O operador except aceita duas sequências de nós como operandos e retorna uma sequência contendo todos os nós que ocorrem no primeiro operando, mas não no segundo. Exemplo: a interrogação seguinte retorna um livro com todos os seus filhos excepto o preço for $b in doc(books.xml)//book where $b/title = TCP/IP Illustrated return { } { $b/* except $b/price }

Expressões if-then-else Exemplo: Qual o holding dos documentos publicados? for $h in document("library.xml")//holding return { $h/title, if = "Journal") then $h/editor else $h/author }

Expressões quantificadas: some some exprime o quantificador existencial Exemplo: Qual o documento que menciona actividades de sailing e windsurfing for $b in document("bib.xml")//book where some $p in $b//paragraph satisfies (contains($p,"sailing") and contains($p,"windsurfing")) return $b/title

Expressões quantificadas: every every exprime o quantificador universal Exemplo: Qual o documento onde cada parágrafo fala acerca de sailing for $b in document("bib.xml")//book where every $p in $b//paragraph satisfies contains($p,"sailing") return $b/title

Funções pré-definidas O XQuery tem um conjunto de funções e operadores pré- definidos, entre as quais: min(), max(), count(), sum(), avg() round(), floor(), ceiling(), concat(), etc distinct-values(), doc(), collection(), not(), etc Exemplo: Quais os livros onde nenhum autor tem como último nome Stevens for $b in doc(books.xml)//book where not (some $a in $b/author satisfies $a/last = Stevens) return $b

Funções definidas pelo utilizador Se não conseguirmos encontrar a função XPath de que necessitamos, então podemos escrever a nossa própria Funções definidas pelo utilizador podem ser escritas em XQuery usando a seguinte sintaxe: declare function prefix:function_name($parameter as datatype) as returnDatatype { (:...insert FLOWR/XPath expression here...:) }; Notas: O nome da função tem que ser precedido por um namespace O tipo de dados para os parâmetros e o valor de retorno é opcional É útil para estruturar interrogações complexas e para reutilizar código

Exemplo declare function local:minPrice($p as xs:decimal, $d as xs:decimal) AS xs:decimal { let $disc := ($p * $d) div 100 return ($p - $disc) }

Quando o XQuery não se comporta como esperado... Se a interrogação não compila => reformulá-la Podemos começar pelos use cases de XQuery A interrogação é compilada, mas não funciona A interrogação funciona, mas não dá os resultados esperados => tentar compreender o que o parser percebeu.

Implementações do XQuery Entre aquelas que são de distribuição livre, temos: Galax : completa, mas não muito eficiente Saxon : em memória MonetDB : em memória; está entre os mais eficientes eXist : uma interface muito amigável QizX : completa, com xquery update BerkeleyDB XML : pertence à Oracle, agora

SQL/XML: a ponte entre os dois mundos (1) As versões recentes do SQL (2003) incluem: Um tipo atómico XML nativo, que pode ser interrogado no estilo XQuery Um conjunto de funções de publicação XML: que permitem extrair elementos de XML a partir de dados relacionais usando interrogações Regras de mapeamento: permitem exportar tabelas relacionais em XML Vantagens: Manipulação uniforme de dados relacionais e XML Motor de interrogações relacionais bem explorado Facilidade de transformação de um formato no outro Desvantagens: Complexidade

SQL/XML: a ponte entre os dois mundos (2) Funções de publicação XML: select xmlelement (name Customer, xmlattributes(c. city as city), xmlforest (c.CustID, c. Name as CustName )) from customer c Interrogações mistas: select customer, XMLExtract from orders where XMLExists(order,'/order[//desc/text()="Shoes"]') =1 A sintaxe SQL/XML precisa depende, muitas vezes, do vendedor.

Referências Ioana Manolescu, slides about XQuery, course about Web Data Management and Distribution, Master Recherche Informatique Paris Sud, rocq.inria.fr/~abitebou/Master-SSD/slxquery.pdf rocq.inria.fr/~abitebou/Master-SSD/slxquery.pdf XQuery: A Guided Tour (book chapter from XQuery from the Experts)