banco de dados - wordpress.com · 2012. 10. 30. · aula 12 banco de dados adaptado dos slides do...
TRANSCRIPT
Disciplina:
http://docente.ifrn.edu.br/edmilsoncampos/
@edmilsonbcn
Edmilson Campos, Prof.
AULA 12
Banco de Dados
Adaptado dos slides do Prof. José Antônio, IFRN – CNAT.
Cod_Cli Nome_Cli Sexo_Cli Renda_Cli RG_Cli
1 João Carlos M 5000.00 123456
2 Daniel M 6000.00 145678
3 Helena F 6000.00 564333
4 Roberta F 5000.00 564322
5 Renata F 3000.00 654321
6 Giovanna F 3500.00 564322
Tabela Cliente
Cod_Func Nome_Func Sexo_Func Sal_Func Data_CadFunc
1 Salvador M 7000.00 03/01/1995
2 Antônio M 6000.00 06/05/1998
3 Antonieta F 6500.00 07/08/1998
4 Eduardo M 4000.00 06/08/2000
5 Leny F 3000.00 06/08/2001
Tabela Funcionário
Edmilson Campos ([email protected])5
Edmilson Campos ([email protected])6
▪
SELECT 'Funcionário' AS TIPO,
Nome_Func AS NOME,
Sexo_Func AS SEXO,
Sal_Func AS SEXO,
Data_CadFunc AS 'DATA DE CADASTRO',
RG = null
FROM Funcionario
UNION ALL
SELECT 'Cliente',
Nome_Cli,
Sexo_Cli,
Renda_Cli,
Null,
RG_Cli
FROM Cliente
ORDER BY tipo
TIPO NOME SEXO DATA DE CADASTRO
RG
Cliente João Carlos M NULL 123456
Cliente Daniel M NULL 145678
Cliente Helena F NULL 564333
Cliente Roberta F NULL 564322
Cliente Renata F NULL 654321
Cliente Giovanna F NULL 564322
Funcionário Salvador M 03/01/1995 NULL
Funcionário Antônio M 06/05/1998 NULL
Funcionário Antonieta F 07/08/1998 NULL
Funcionário Eduardo M 06/08/2000 NULL
Funcionário Leny F 06/08/2001 NULL
Edmilson Campos ([email protected])9
Cod_Pai Nome_Pai Idade_Pai
1 Daniel de Souza Leão Sobrinho 62
2 João Carlos da Silva 38
3 Fernando de Oliveira 36
Cod_Filho Cod_Pai Nome_Filho Sexo_Filho
1 1 Renata de Oliveira Leão F
2 1 Fernando de Oliveira Leão M
3 1 Roberta de Oliveira Leão F
4 1 Jairo de Oliveira Leão M
5 2 Giovanna da Silva F
6 3 Lucas Ribeiro Oliveira M
7 3 Helder Ribeiro Oliveira M
Edmilson Campos ([email protected])10
▪»
▪»
SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Filho.Sexo_Filho AS Sexo
FROM Pai INNER JOIN Filho
ON (Pai.Cod_Pai = Filho.Cod_Pai)
SELECT *
FROM Pai INNER JOIN Filho
ON Pai.Cod_Pai = Filho.Cod_Pai
Edmilson Campos ([email protected])11
▪
▪
Cod_Emp Nome_Emp Cod_Chefe
1 João Null
2 Matheus 1
3 Lucas 1
4 Pedro 2
5 Thiago 2
6 José 2
7 Tânia 1
8 Joana 3
9 Rosana 3
10 Maria 4
SELECT C.Nome_Emp AS Chefe,
E.Nome_Emp AS Empregado
FROM Empregado C, Empregado E
WHERE C.Cod_Emp = E.Cod_Chefe
ORDER BY C.Nome
▪
▪
SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Filho.Sexo_Filho AS Sexo
FROM Pai LEFT OUTER JOIN Filho
ON Pai.Cod_Pai = Filho.Cod_Pai
Esse consulta retorna
todos os pais com
filhos ou não
SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Filho.Sexo_Filho AS Sexo
FROM Pai RIGHT OUTER JOIN Filho
ON (Pai.Cod_Pai = Filho.Cod_Pai)
Esse consulta retorna
todos os filhos com
pais registrados ou
não no sistema
Edmilson Campos ([email protected])12
Edmilson Campos ([email protected])13
▪
▪
SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Filho.Sexo_Filho AS Sexo
FROM Pai FULL OUTER JOIN Filho
ON (Pai.Cod_Pai = Filho.Cod_Pai)
Edmilson Campos ([email protected])14
▪
▪
▪
Select Pedido.Num_Ped,
Material.Nome_Mat
FROM Pedido CROSS JOIN Material
Cod_Mat Nome_Mat
1 Caderno
2 Lápis
3 Borracha
4 Caneta
Num_Ped Data_Ped
1 24/06/2002
2 06/08/2002
Tabela Pedido Tabela Material
Edmilson Campos ([email protected])15
▪
SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai INNER JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
INNER JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)
Retorna todos os filhos e seus
respectivos pais e suas notas
Edmilson Campos ([email protected])16
▪
SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai INNER JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
LEFT JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)
Retorna todos os filhos e seus
respectivos pais e suas notas,
inclusive os filhos sem notas
Edmilson Campos ([email protected])17
▪
SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai LEFT JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
LEFT JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)
Retorna todos os filhos e seus
respectivos pais e suas notas.
Mostra também os pais com filhos e
filhos sem notas e os pais sem filhos.
Edmilson Campos ([email protected])18
▪
SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai FULL JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
FULL JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)
Retorna pai com filho e filho
com nota, e filho sem pai e
sem nota.