1 / 36

DB2 Express-C 9 Banco de Dados Relacional/XML Nativo

DB2 Express-C 9 Banco de Dados Relacional/XML Nativo. Marcelo Maruyama Diniz (marcelomd@comp.ufscar.br) DC – UFSCar 09/11/2006. Agenda. Introdução ao DB2 Express-C 9 Comandos relacionais XML XPath SQL/XML XQuery. Introdução.

aman
Télécharger la présentation

DB2 Express-C 9 Banco de Dados Relacional/XML Nativo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DB2 Express-C 9 Banco de Dados Relacional/XML Nativo Marcelo Maruyama Diniz (marcelomd@comp.ufscar.br) DC – UFSCar 09/11/2006

  2. Agenda • Introdução ao DB2 Express-C 9 • Comandos relacionais • XML • XPath • SQL/XML • XQuery

  3. Introdução DB2 Express-C 9: banco de dados relacional/XML nativo da IBM Disponível para download em www-306.ibm.com/software/data/db2/express/download.html XML nativo: campos são dados XML, e não referências para arquivos XML.

  4. Usuários • DB2 não gerencia usuários. • O sistema operacional é o responsável. • Ao instalar, fornecer um nome de usuário e senha existentes, caso contrário uma nova conta será criada.

  5. Instâncias • Podem ser executadas diversas instâncias do DB2 a partir de uma mesma instalação. • Como se vários DB2 executassem independentemente. • Cada instância tem suas configurações individuais. • Uma instância padrão é criada durante a instalação.

  6. Centro de Controle • Ferramenta gráfica para utilização do DB2. • Recomendada para criação de objetos no banco de dados.

  7. Command Line Processor (CLP) • Ferramenta em linha de comando para utilização do DB2. • Deve ser invocado através do menu para correta inicialização das variáveis.

  8. Scripts Para criação, edição e execução de scripts, utilize a ferramenta Editor de Comandos

  9. Privilégios GRANT [ALL | privilégio] ON [TABLE | VIEW | INDEX, ...] [objeto] TO [usuário, ... grupo,..., PUBLIC] <WITH GRANT OPTION> REVOKE [ALL | privilégio] ON [TABLE | VIEW | INDEX, ...] [objeto] FROM [usuário, ... grupo,..., PUBLIC ] <BY ALL>

  10. Criação e exclusão de bancos de dados • Recomendável a utilização do Centro de Controle, clicando com botão direito em Todos os Bancos de Dados -> Criar Banco de Dados -> Padrão... • Para habilitar o uso de campos XML, marcar a opção ‘Ativar banco de dados para XML’ • Sintaxe simplificada: CREATE DATABASE [banco de dados] DROP DATABASE [banco de dados]

  11. Criação e exclusão de tabelas • Recomendável a utilização do Centro de Controle, clicando com o botão direito em Tabelas -> Criar na sub-árvore do banco de dados. • Sintaxe resumida: CREATE TABLE [tabela] ( [ [campo] [tipo do campo] <NOT NULL> <WITH DEFAULT> ...] <unique constraints> <check constraints> <referencial constraints> ) DROP TABLE [tabela]

  12. DML INSERT INTO [tabela] <(campos, ...)> values (valores, ...) INSERT INTO [tabela] <(campos, ...)> [Select...] UPDATE [tabela] SET [[campo1] = [valor1], ...] <WHERE [condição]> UPDATE [tabela] SET (campos, ...) = ([Select...]) <WHERE [condição]> DELETE FROM [tabela] <WHERE [condição]> DELETE FROM [tabela] (Select...)

  13. Select Statement SELECT <DISTINCT> (campos, funções, ...) FROM [tabelas, ...] <WHERE [condição]> SELECT <DISTINCT> (campos, funções, ...) FROM [tabela 1] INNER JOIN [tabela2] ON <condição> Condição pode utilizar os predicados relacionais (<, >, ...), BETWEEN, NOT, LIKE ,IN, EXISTS e NULL

  14. XML • EXtensible Markup Language • Linguagem de marcação para descrição de dados. • O usuário define suas próprias tags de acordo com a semântica desejada. • Pode ser validado segundo a forma com uma DTD ou um XML Schema.

  15. Exemplo <?xml version="1.0" encoding="ISO-8859-1"?> <alunos> <aluno ra="1"> <nome>Débora</nome> <cidadeOrigem>Fortaleza</cidadeOrigem> <curso>Ciência da Computação</curso> <condicao status=“rico” /> </aluno> <aluno ra="2"> <nome>Carla</nome> <cidadeOrigem>Olinda</cidadeOrigem> <curso>Biologia</curso> <condicao status=“pobre” /> </aluno> </alunos>

  16. Regras • Toda tag aberta deve ser fechada • Uma tag pode ser vazia <tag/> • Cada tag pode conter subtags, formando uma estrutura em árvore • Cada tag pode conter atributos • Todo documento XML deve ter uma tag raiz

  17. Criação de tabelas com campos XML • Utilizando o Centro de Controle, escolher o tipo do campo como XML • Utilizando o CLP CREATE TABLE [tabela]( campo1 xml, ... )

  18. Inserção de dados XML INSERT INTO tabelaEx (campoInt, campoXML) values (1, ‘<dado>algumDado</dado>’) IMPORT FROM “arqDescricao.del” OF DEL XML from “pathParaArqsXML” INSERT INTO tabelaEx

  19. Inserção de dados XML Onde: • arqDescricao.del tem os dados e referências para arquivos XML a serem incluídos, separados por vírgula. • pathParaArqsXML é o caminho onde os arquivos XML referenciados estão. • Descrever os caminhos completos!

  20. Inserção de dados XML - Exemplo Arquivo arqDescricao.del na pasta C:\ Arquivo aluno1.xml na pasta C:\temp IMPORT FROM “C:\arqDescricao.del" OF DEL XML FROM “C:\temp" INSERT INTO tabelaEx 4,<XDS FIL='aluno1.xml'/>, 5,<XDS FIL='aluno2.xml'/> • <?xml version="1.0" encoding="ISO-8859-1"?> • <aluno ra="1"> • <nome>Débora</nome> • <cidadeOrigem>Fortaleza</cidadeOrigem> • <curso>Ciência da Computação</curso> • <condicao status="rico" /> • </aluno>

  21. XPath • Linguagem para navegar em documentos XML. • Contém funções pré-definidas para manipulação dos dados. • Há 7 tipos de nós: elemento, atributo, texto, namespace, instrução de processamento, comentário e nó root.

  22. XPath • <dept bldg=“101”> • <employee id=“901”> • <name>John Doe</name> • <phone>408 555 1212</phone> • <office>344</office> • </employee> • <employee id=“902”> • <name>Peter Pan</name> • <phone>408 555 9918</phone> • <office>216</office> • </employee> • </dept> • Caminhos completos para especificar elementos ou atributos • @ é usado para especificar um atributo • text() é usado para especificar o texto dentro de um elemento nó

  23. XPath • * é usado como caractere curinga. • // indica o próprio nó ou qualquer um de seus descendentes • <dept bldg=“101”> • <employee id=“901”> • <name>John Doe</name> • <phone>408 555 1212</phone> • <office>344</office> • </employee> • <employee id=“902”> • <name>Peter Pan</name> • <phone>408 555 9918</phone> • <office>216</office> • </employee> • </dept>

  24. XPath • <dept bldg=“101”> • <employee id=“901”> • <name>John Doe</name> • <phone>408 555 1212</phone> • <office>344</office> • </employee> • <employee id=“902”> • <name>Peter Pan</name> • <phone>408 555 9918</phone> • <office>216</office> • </employee> • </dept> • Predicados são utilizados dentro de [...] • [n] seleciona o n-ésimo filho do nó

  25. XPath • <dept bldg=“101”> • <employee id=“901”> • <name>John Doe</name> • <phone>408 555 1212</phone> • <office>344</office> • </employee> • <employee id=“902”> • <name>Peter Pan</name> • <phone>408 555 9918</phone> • <office>216</office> • </employee> • </dept> • . representa o nó atual • .. representa o nó pai

  26. SQL/XML • SQL com extensão XML. • Permite consultar nós específicos de documentos XML armazenados em campos de uma tabela, ao invés de recuperar apenas o documento inteiro. • Utiliza sintaxe do XPath. • Funções básicas • xmlexists • xmlquery • xmltable

  27. SQL/XML xmlexists: as linhas retornadas contém um documento XML com o valor especificado. Retorna verdadeiro ou falso. select name from clients where xmlexists(‘$c/Client/Address[zip = “95116”]’ passing clients.contact as “c”) Seleciona o campo nome da tabela clients de todas as linhas que tem um documento XML no campo contact com nó pai Client, nó filho Address e nó neto zip com valor 95116

  28. SQL/XML xmlquery: retorna elementos do documento XML select xmlquery(‘$c/Client/email’ passing contact as “c”) from clients where status = ‘Gold’ Seleciona os nós email filhos do nó Client do documento XML no campo contact da tabela clients sendo o campo status igual a ‘Gold’. Para selecionar o texto do nó email, utilizar text()

  29. SQL/XML xmltable: retorna uma tabela relacional a partir de documentos XML. select t.comment#, i.itemname, t.customerID, Message from items i, xmltable(‘$c/Comments/Comment’ passing i.comments as “c” columns Comment# integer path ‘CommentID’, CustomerID integer path ‘CustomerID’, Message varchar(100) path ‘Message’) as t Converte os nós Comment do documento XML no campo comments da tabela items numa tabela de nome t com colunas Comment# (para o nó CommentID), CustomerID (para o nó CustomerID) e Message (para o nó Message)

  30. XQuery • Linguagem para consultar documentos XML. • Utiliza sintaxe do XPath. • Retorna sequências de dados XML. • Expressão iniciada com ‘xquery’

  31. XQuery For: itera por uma sequência Let: atribui uma variável a uma sequência Where: estabelece condição Order: reordena itens Return: monta o resultado da xquery

  32. SQL/XML Utilizando o FLWOR com SQL/XML Select name, xmlquery(‘for $e in $c/Client/email[1] return $e’ Passing contact as “c”) From clients Where status = ‘Gold’ Retorna o nome e o resultado da xmlquery. xmlquery checa o campo contact de cada linha da tabela clients cujo campo status seja igual a ‘Gold’ e, para cada um deles, retorna o primeiro nó email.

  33. XQuery XQuery para recuperar os contatos do cliente (campo contact é XML) Xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’) (argumento precisa ser maiúsculo!) db2-fn:xmlcolumn: função com parâmetro que identifica a tabela e o campo XML Equivalente à Select contact from clients

  34. XQuery - Exemplos xquery For $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/fax Return $y Resultado: <fax>4081112222</fax> <fax>5559998888</fax>

  35. XQuery - Exemplos xquery for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address order by $y/zip return $y xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address[zip=“95116”]

  36. Bibliografia • XPath, SQL/XML e XQuery www.w3schools.com/xpath/default.asp www.w3schools.com/xquery/default.asp www-128.ibm.com/developerworks/db2/library/techarticle/dm-0511melnyk/ www-128.ibm.com/developerworks/db2/library/techarticle/dm-0604saracco/ www.redbooks.ibm.com/abstracts/SG247315.html

More Related