200 likes | 332 Views
LPBD. Pesquisa avançada UNION / INTERSECT / EXCEPT Aula 1 / 2010. União de Dados. 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.
E N D
LPBD Pesquisa avançada UNION / INTERSECT / EXCEPT Aula 1 / 2010
União de Dados • 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.
União de Dados • 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.
União de Dados • Quando une duas ou mais tabelas apresenta apenas uma linha de registro caso haja nas tabelas envolvidas duplicidade daquele registro
SINTAXE 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.
REGRAS • Os comandos devem retornar o mesmo número de colunas • As colunas correspondentes em cada comando devem possuir os mesmos tipos de dados.
EXERCÍCIO • Listar os títulos dos livros que cujo assunto é “Banco de Dados” ou que foram lançados por editoras que contenham “Silva” no nome.
RESPOSTA 1 SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘BANCO DE DADOS’ UNION SELECT TITULO FROM LIVRO INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ TITULO BANCO DE DADOS NA BIOINFORMÁTICA BANCO DE DADOS PARA WEB PROGRAMANDO EM LINGUAGEM C
RESPOSTA 2 SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘BANCO DE DADOS’ UNION ALL SELECT TITULO FROM LIVRO INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ TITULO BANCO DE DADOS PARA WEB BANCO DE DADOS PARA WEB PROGRAMANDO EM LINGUAGEM C BANCO DE DADOS NA BIOINFORMÁTICA
INTERSECÇÃO • 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.
REGRAS • Os comandos devem retornar o mesmo número de colunas • As colunas correspondentes em cada comando devem possuir os mesmos tipos de dados.
EXERCÍCIO • 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.
RESPOSTA SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘PROGRAMANDO’ INTERSECT SELECT TITULO FROM LIVRO INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ TITULO PROGRAMANDO EM LINGUAGEM C
DIFERENÇA • 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.
EXERCÍCIO • 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.
RESPOSTA SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘PROGRAMANDO’ EXCEPT SELECT TITULO FROM LIVRO INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ TITULO BANCO DE DADOS NA BIOINFORMÁTICA
EXERCÍCIO 2 • 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’.
RESPOSTA SELECT TITULO FROM LIVRO INNER JOIN EDITORA E ON EDITORA = E.CODIGO WHERE NOME LIKE ‘%MIRANDELA%’ EXCEPT SELECT TITULO FROM LIVRO INNER JOIN ASSUNTO ON ASSUNTO = SIGLA WHERE DESCRICAO = ‘BANCO DE DADOS’ TITULO PROGRAMANDO EM LINGUAGEM C
PRÁTICA LABORATÓRIOUNION / INTERSECT / EXCEPT • Escreva o comando SQL que retorna uma listagem contendo os nomes das editoras que lançam apenas livros cujo assunto é ‘Banco de Dados’.
Referências: • Livros da Bibliografia. • SQL: guia prático 2ed.– Rogério Luis de C Costa.Rio de Janeiro: BRASPORT, 2006