XQuery (2ª parte) DEI IST. (baseado nos slides de Ioana Manolescu, acessíveis em: http://www-rocq.inria.fr/~abitebou/master-ssd/slxquery.



Documentos relacionados
The XQuery Language. Gestão e Tratamento da Informação DEI IST 2011/2012

Bases de Dados 2013/2014 Gestão de Dados XML. Helena Galhardas. Sumário!

GERÊNCIA DE DADOS SEMI ESTRUTURADOS - XQUERY. Prof. Angelo Augusto Frozza

Introdução e motivação SGBD XML Nativo Consultas em SGBDs XML Prática. Bancos de dados XML. Conceitos e linguagens de consulta

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Tarefa Orientada 13 Agrupamento e sumário de dados

XQuery Update. Gestão e Tratamento da Informação DEI IST

XQuery (1ª parte) Gestão e Tratamento da Informação DEI IST. (baseado nos slides de Ioana Manolescu, acessíveis em:

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

Definida pelo American National Standard Institute (ANSI) em 1986

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Introdução ao SQL Avançado

DML - SELECT Agrupando Dados

Tarefa Orientada 16 Vistas

Projeto de Banco de Dados

Comandos de Manipulação

Banco de Dados. Prof. Antonio

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

XPath. Resumo Descrever um esquema específico XML (XPath) para identificar subestruturas

Pedro F. Carvalho OCP Oracle g LINGUAGEM SQL. São José do Rio Preto

Tarefa Orientada 14 Subconsultas

Structured Query Language (SQL)

Linguagem de Consulta - SQL

Prof.: Clayton Maciel Costa

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Projeto e Implementação

António Rocha Nuno Melo e Castro

Aula 5. Carlos Eduardo de Carvalho Dantas

Gestão e Tratamento de Informação 1º semestre

Tarefa Orientada 11 Junção Interna

SQL Comandos para Relatórios e Formulários. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Gerência de Dados da Web

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Gerência de Dados da Web

Índice. Introdução 31. Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais 35

Índice. Introdução Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais... 35

select nome from Médicos where codm in (select codm from Consultas where data = 06/06/13 )

SQL DML. Frederico D. Bortoloti

NOME SEXO CPF NASCIMENTO SALARIO

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

1.264 Aula 7. Introdução ao SQL

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Prova de Fundamentos de Bancos de Dados 2 a Prova

Linguagem de Banco de Dados DML Exercícios

Bases de Dados 2005/2006. Aula 5

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Tarefa Orientada 10 Obter informação a partir de uma tabela

Revisão / Exercícios. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

Consultas SQL Parte II

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Bases de dados semi-estruturadas, XML

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Consulta a dados XML - XQuery. Vanessa Braganholo

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Programação SQL. INTRODUÇÃO II parte

Apostila Delphi V 1.0

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

Tarefa Orientada 15 Manipulação de dados

BANCO DE DADOS Parte 4

SQL. Prof. Márcio Bueno.

Consultas (Queries) ou Interrogações

BDII SQL Junção Revisão 8

Gerenciamento de Dados e Informação Fernando Fonseca. Graduação

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

Query SQL (Structured Query Language)

Junções e Índices em Tabelas

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Principais Instruções em SQL

Projeto de Banco de Dados

DML. SQL (Select) Verificando estrutura da tabela

Treinamento sobre SQL

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

XPath. Vanessa Braganholo. Curso baseado em mini-cursos apresentados no SBBD. Autores: Carlos Heuser, Carina Dorneles e Vanessa Braganholo

Banco de Dados. Maurício Edgar Stivanello

Álgebra relacional. Fernando Lobo. Conjunto de operadores que permitem manipular relações: produtos cartesianos e joins.

MySQL: Inserção e Seleção em Tabelas

Capítulo 2: Introdução à Linguagem C

Subconsultas ou Consultas Aninhadas

Linguagem SQL (Parte I)

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Múltiplas Tabelas. Disciplina de Banco de Dados

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

Tarefa Orientada 18 Procedimentos armazenados

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

SQL UMA ABORDAGEM INTERESSANTE

Operação de União JOIN

Transcrição:

XQuery (2ª parte) DEI IST (baseado nos slides de Ioana Manolescu, acessíveis em: http://www-rocq.inria.fr/~abitebou/master-ssd/slxquery.pdf)

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

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 <person> <ssn> { $p/ssn } </ssn> { $n/ name } <income> { $p/ income } </income> </person> 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 <review> { $t } { for $e in doc( reviews.xml )//entry where $e/title = $t return $e/remarks } </review>

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 <big-dept> { $d, <headcount>{ count($e) } </headcount>, <avgsal>{ avg($e/salary) } </avgsal> } </big-dept>

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 <publisher> <name>{ $p/text() }</name> <avgprice>{ $a }</avgprice> </publisher>

Uniã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 <last> { $l } </last> 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 <book> { $b/@* } { $b/* except $b/price } </book>

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

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) }

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 (order,'/order/@date') 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, http://www-rocq.inria.fr/~abitebou/master-ssd/slxquery.p www.perfectxml.com/xquery.html XQuery: A Guided Tour (book chapter from XQuery from the Experts)