Você está na página 1de 11

Consultando um BD no

Modelo Relacional
Profa. Renata Vilas Boas
E-mail: renata.boas@area1fte.edu.br
Juno
A operao de juno utilizada para combinar linhas
de duas tabelas partindo dos atributos comuns a
ambas
O resultado conter as colunas das duas tabelas que
esto participando da juno
Como vamos ver: Normalizao um Processo de
decomposio de um esquema de relao em outros
esquemas de relao
Logo, esta operao de extrema importncia em
bancos de dados relacionais, pois atravs dela que
nos permitido fazer relacionamento e recuperar a
viso do todo
Consulta: Explorando a Juno
CROSS
Retorna o produto cartesiano das
tabelas envolvidas
INNER (default)
Retorna apenas as linhas
obtiveram cruzamento
LEFT
Retorna as linhas obtiveram
cruzamento e as linhas da tabela
da esquerda que no obtiveram
RIGHT
Retorna as linhas obtiveram
cruzamento e as linhas da tabela
da direita que no obtiveram
FULL
LEFT e RIGHT juntos
SELECT *
FROM Pedido CROSS JOIN Pea
SELECT *
FROM Pedido INNER JOIN Pea
on pedido.codPeca = peca.codPeca
SELECT *
FROM Pedido LEFT JOIN Pea
on pedido.codPeca = peca.codPeca
SELECT *
FROM Pedido RIGHT JOIN Pea
on pedido.codPeca = peca.codPeca
SELECT * FROM Pedido CROSS JOIN Pea
CodPea NomePea CorPea CidadePea
P1 Parafuso Cinza Salvador
P2 Rosca Dourada Fortaleza
P3 Alicate Verde Rio de Janeiro
Pea
P1 F3 2004-03-30 500 P1 Parafuso Cinza Salvador
P2 F1 2002-10-05 100 P1 Parafuso Cinza Salvador
P2 F4 2003-06-24 150 P1 Parafuso Cinza Salvador
P1 F1 2003-05-12 300 P2 Rosca Dourada Fortaleza
P1 F2 2002-12-08 200 P2 Rosca Dourada Fortaleza
P1 F3 2004-03-30 500 P2 Rosca Dourada Fortaleza
P2 F1 2002-10-05 100 P2 Rosca Dourada Fortaleza
P2 F4 2003-06-24 150 P2 Rosca Dourada Fortaleza
P1 F1 2003-05-12 300 P3 Alicate Verde Rio de Janeiro
P1 F2 2002-12-08 200 P3 Alicate Verde Rio de Janeiro
P1 F3 2004-03-30 500 P3 Alicate Verde Rio de Janeiro
P2 F1 2002-10-05 100 P3 Alicate Verde Rio de Janeiro
P2 F4 2003-06-24 150 P3 Alicate Verde Rio de Janeiro
CodPea CodFornec DataPedido Qtdade
P1 F1 5/12/2003 300
P1 F2 12/8/2002 200
P1 F3 30/03/2004 500
P2 F1 10/5/2002 100
P2 F4 24/06/2003 150
Pedido
SELECT * FROM Pedido INNER JOIN Pea on pedido.codPeca = peca.codPeca
CodPea NomePea CorPea CidadePea
P1 Parafuso Cinza Salvador
P2 Rosca Dourada Fortaleza
P3 Alicate Verde Rio de Janeiro
Pea
P1 F1 2003-05-12 00:00:00.000 300 P1 Parafuso Cinza Salvador
P1 F2 2002-12-08 00:00:00.000 200 P1 Parafuso Cinza Salvador
P1 F3 2004-03-30 00:00:00.000 500 P1 Parafuso Cinza Salvador
P2 F1 2002-10-05 00:00:00.000 100 P2 Rosca Dourada Fortaleza
P2 F4 2003-06-24 00:00:00.000 150 P2 Rosca Dourada Fortaleza
CodPea CodFornec DataPedido Qtdade
P1 F1 5/12/2003 300
P1 F2 12/8/2002 200
P1 F3 30/03/2004 500
P2 F1 10/5/2002 100
P2 F4 24/06/2003 150
Pedido
Uma outra forma de fazer INNER JOIN colocar a
condio de juno na clusula WHERE. Por exemplo:
SELECT *
FROM Pedido, Peca
WHERE pedido.codPeca = peca.codPeca
SELECT * FROM Peca LEFT JOIN Pedido on pedido.codPeca = peca.codPeca
CodPea NomePea CorPea CidadePea
P1 Parafuso Cinza Salvador
P2 Rosca Dourada Fortaleza
P3 Alicate Verde Rio de Janeiro
Pea
P1 Parafuso Cinza Salvador P1 F1 2003-05-12 300
P1 Parafuso Cinza Salvador P1 F2 2002-12-08 200
P1 Parafuso Cinza Salvador P1 F3 2004-03-30 500
P2 Rosca Dourada Fortaleza P2 F1 2002-10-05 100
P2 Rosca Dourada Fortaleza P2 F4 2003-06-24 150
P3 Alicate Verde Rio de Janeiro NULL NULL NULL NULL
CodPea CodFornec DataPedido Qtdade
P1 F1 5/12/2003 300
P1 F2 12/8/2002 200
P1 F3 30/03/2004 500
P2 F1 10/5/2002 100
P2 F4 24/06/2003 150
Pedido
SELECT * FROM Pedido RIGHT JOIN Peca on pedido.codPeca = peca.codPeca
P1 F1 2003-05-12 300 P1 Parafuso Cinza Salvador
P1 F2 2002-12-08 200 P1 Parafuso Cinza Salvador
P1 F3 2004-03-30 500 P1 Parafuso Cinza Salvador
P2 F1 2002-10-05 100 P2 Rosca Dourada Fortaleza
P2 F4 2003-06-24 150 P2 Rosca Dourada Fortaleza
NULL NULL NULL NULL P3 Alicate Verde Rio de Janeiro
CodPea NomePea CorPea CidadePea
P1 Parafuso Cinza Salvador
P2 Rosca Dourada Fortaleza
P3 Alicate Verde Rio de Janeiro
Pea
CodPea CodFornec DataPedido Qtdade
P1 F1 5/12/2003 300
P1 F2 12/8/2002 200
P1 F3 30/03/2004 500
P2 F1 10/5/2002 100
P2 F4 24/06/2003 150
Pedido
Exerccios
Liste o nome do departamento e o nome do gerente
do departamento
Obtenha o nome do empregado e o nome do
departamento que este empregado est alocado
Selecione o nome do departamento, o nome do
projeto controlado pelo departamento, o nome do
empregado que trabalha no projeto e o nmero de
horas trabalhadas no projeto
Acrescente na consulta anterior as seguintes
restries: retorne apenas os empregados que
ganham menos de R$ 800 e trabalham mais de 5
horas no referido projeto
Auto-Relacionamento
Pea = cdigo, nome,
est_contida
Pea
Composio
n
1
p2 p1
p3 p4
p3,p2
p4,p2
est_contida
contm
est_contida
contm
cdigo nome est_contida
p1 Porta
p2 Motor
p3 Radiador P2
p4 Pisto P2
Auto-Relacionamento
Retorne o nome da pea e o nome da pea a qual
est contida

SELECT peca.nome AS nomePeca, peca_contida.nome
AS nomePecaContida
FROM peca INNER JOIN peca AS peca_contida ON
peca.esta_contida = peca_contida.codigo
nomePeca nomePecaContida
Radiador Motor
Pisto Motor
Alases - Renomeao
Auto-Relacionamento
Exerccio: Retorne o nome do empregado e,
caso tenha, o nome do seu supervisor

Você também pode gostar