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
Download

Projeto Articulador de Suporte Técnico Help Desk