AGBD LPBD Pesquisa avançada UNION / INTERSECT / EXCEPT Aula 1 / 2010 Prof. Rebecca Arambasic União de Dados AGBD • O recurso de união de dados baseia-se na união de uma consulta em uma única consulta por meio de múltiplos comandos SELECT. • Esse recurso é utilizado pelo predicado UNION ou UNION ALL sendo posicionado entre dosi comandos de consulta. Prof. Rebecca Arambasic União de Dados AGBD • ALL representa todos os registros encontrados na consulta, independente de esses registros serem ou não duplicados. • Se ALL for omitido o comando UNION assume como default a apresentação de valores únicos caso haja alguma duplicidade. Prof. Rebecca Arambasic União de Dados AGBD • Quando une duas ou mais tabelas apresenta apenas uma linha de registro caso haja nas tabelas envolvidas duplicidade daquele registro Prof. Rebecca Arambasic SINTAXE AGBD SELECT col1,col2 FROM tabela1 UNION [ALL] SELECT col3, col4 FROM tabela2 • Observe que os comando poderão acessar tabelas diferentes e utilizar as mais diversas construçoes da linguagem. Prof. Rebecca Arambasic REGRAS AGBD – Os comandos devem retornar o mesmo número de colunas – As colunas correspondentes em cada comando devem possuir os mesmos tipos de dados. Prof. Rebecca Arambasic EXERCÍCIO AGBD • Listar os títulos dos livros que cujo assunto é “Banco de Dados” ou que foram lançados por editoras que contenham “Silva” no nome. Prof. Rebecca Arambasic RESPOSTA 1 AGBD SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘BANCO DE DADOS’ UNION TITULO SELECT TITULO BANCO DE DADOS NA BIOINFORMÁTICA FROM LIVRO BANCO DE DADOS PARA WEB INNER JOIN EDITORA E PROGRAMANDO EM LINGUAGEM C ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ Prof. Rebecca Arambasic RESPOSTA 2 AGBD SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘BANCO DE DADOS’ UNION ALL TITULO SELECT TITULO BANCO DE DADOS PARA WEB FROM LIVRO BANCO DE DADOS PARA WEB PROGRAMANDO EM LINGUAGEM C INNER JOIN EDITORA E ON EDITORA = E.CODIGO BANCO DE DADOS NA BIOINFORMÁTICA WHERE NOME LIKE ‘%MIRANDELA%’ Prof. Rebecca Arambasic INTERSECÇÃO AGBD • Para obtermos a intersecção entre os resultados de comandos SELECT utilizamos o predicado INTERSECT. • INTERSECT retornará as linhas que estejam preesente nos resultados de todas as cosultas participantes. • Retornará as linhas que estejam presentes nos resultados de todas as colunas participantes. Prof. Rebecca Arambasic REGRAS AGBD – Os comandos devem retornar o mesmo número de colunas – As colunas correspondentes em cada comando devem possuir os mesmos tipos de dados. Prof. Rebecca Arambasic EXERCÍCIO AGBD • Listar os títulos dos livros cujo assunto é ‘Programando’ e que foram lançados por uma editora que contenha a palavra ‘Mirandela’ no nome, sem repetições. Prof. Rebecca Arambasic RESPOSTA AGBD SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘PROGRAMANDO’ INTERSECT TITULO SELECT TITULO FROM LIVRO PROGRAMANDO EM LINGUAGEM C INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ Prof. Rebecca Arambasic DIFERENÇA AGBD • Também é possível realizar diferenç entre os resultados de comandos SELECT. Neste caso o predicado utilizado é o EXCEPT. • EXCEPT nã permite linhas repetidas no resultado final. Prof. Rebecca Arambasic EXERCÍCIO AGBD • Listar os títulos dos livros cujo assunto é ‘Banco de Dados’ e que não foram lançados por editoras que contenham ‘Mirandela’ no nome. Prof. Rebecca Arambasic RESPOSTA AGBD SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘PROGRAMANDO’ EXCEPT TITULO SELECT TITULO FROM LIVRO BANCO DE DADOS NA BIOINFORMÁTICA INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ Prof. Rebecca Arambasic EXERCÍCIO 2 AGBD • Listar os títulos dos livros que foram lançados por editoras que contenham ‘Mirandela’ em seu nome e cujo assunto não é ‘Banco de Dados’. Prof. Rebecca Arambasic RESPOSTA AGBD SELECT TITULO FROM LIVRO INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ EXCEPT TITULO SELECT TITULO FROM LIVRO PROGRAMANDO EM LINGUAGEM C INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘BANCO DE DADOS’ Prof. Rebecca Arambasic PRÁTICA LABORATÓRIO AGBD UNION / INTERSECT / EXCEPT 1. Escreva o comando SQL que retorna uma listagem contendo os nomes das editoras que lançam apenas livros cujo assunto é ‘Banco de Dados’. Prof. Rebecca Arambasic Referências: AGBD • Livros da Bibliografia. • SQL: guia prático 2ed.– Rogério Luis de C Costa.Rio de Janeiro: BRASPORT, 2006 Prof. Rebecca Arambasic