O documento apresenta os principais tipos de joins no SQL, incluindo INNER JOIN, OUTER JOIN (LEFT, RIGHT e FULL), NATURAL JOIN e operações sobre conjuntos como UNION, INTERSECT e EXCEPT. Exemplos demonstram como esses joins e operações funcionam para combinar informações de múltiplas tabelas e retornar dados específicos. O documento também faz paralelos entre os joins no SQL e operações na álgebra relacional.
5. SELECT-FROM-WHERE
SELECT <projeção e funções>
FROM <lista de tabelas>
[ WHERE predicado ]
[ GROUP BY <atributos de agrupamento> ]
[ HAVING <condição para agrupamento> ]
[ ORDER BY <lista de atributos> ] ;
Joins
6. Produto cartesiano
● De forma geral, permite combinar informações de diversas tabelas.
● Exemplo:
SELECT nome, idade
FROM Medicos M, Consultas C
WHERE M.codm = C.codm
AND idade=40
7. FROM (Álgebra relacional)
Relação 1 x1
Relação 2 x2
… xn
Relação N
● O produto cartesiano, assim como na álgebra, faz uma união das colunas
e um produto das linhas.
● Relações ou resultados de alguma operação da álgebra relacional
separados por vírgula.
πnome, idade
(σidade> 40
(Medicos x Consultas))
8. Exercícios
1. Retornar Médicos e Funcionários que tenham o mesmo nome
2. Retornar uma lista de médicos que trabalham no ambulatório com
capacidade superior a 30
3. Retornar a quantidade de consultas realizadas por cada médico
4. Retornar o número máximo de consultas realizadas pelos pacientes
5. Retornar uma lista de consultas incluindo o nome do médico e do paciente
9. JOINS
● Comandos que combina o produto cartesiano com a operação de seleção da
álgebra relacional.
● A forma mais simples é o INNER JOIN, faz uma seleção baseada em uma
operação booleana sobre os atributos que aparecem nas relações.
SELECT *
FROM Medicos M
INNER JOIN Consultas C
ON M.codm=C.codm
WHERE M.idade=40
10. Junções (Álgebra relacional)
Relação 1 x1
Relação 2 x2
… xn
Relação N
● Relações ou resultados de alguma operação da álgebra relacional
separados por vírgula.
σnome=’Joao’
(Medicos xMedicos.codm=Consultas.codm
Consultas)
11. Exercícios
6. Retornar Médicos e Funcionários que tenham o mesmo nome
7. Retornar uma lista de Médicos que trabalham no ambulatório com
capacidade superior a 30
8. Retornar a quantidade de consultas realizadas por cada Médico
9. Retornar o número máximo de consultas realizadas pelos Pacientes
10. Retornar uma lista de consultas incluindo o nome do Médico e do Paciente
12. OUTER JOIN
● Uma variação que permite incluir também que não satisfazem as igualdades do ON
● Existem em três formas LEFT, RIGHT e FULL
● O LEFT OUTER JOIN permite retornar toda a tabela da esquerda do comando combinada aos
valores da tabela da direita ou valores nulos.
SELECT *
FROM Consultas C
LEFT OUTER
JOIN Medicos M
ON M.codm=C.codm
14. LEFT OUTER (Álgebra relacional)
Relação L ⋊1
Relação R
● Mantém cada tupla de R na tabela de junção e preenche com valores nulos as tuplas de L que
não correspondem à coluna de junção em R.
σnome=’Joao’
(Medicos ⋊Medicos.codm=Consultas.codm
Consultas)
15. RIGHT OUTER JOIN
● Mesma operação do LEFT OUTER JOIN, com a diferença que a tabela
retornada de forma completa é a da direita do comando.
SELECT *
FROM Ambulatorios A
RIGHT OUTER
JOIN Medicos M
ON M.nroa=A.nroa
16. RIGHT OUTER (Álgebra relacional)
Relação L ⋉1
Relação R
● Mantém cada tupla de L na tabela de junção e preenche com valores nulos as tuplas de R que
não correspondem à coluna de junção em L
σnome=’Joao’
(Medicos ⋉Medicos.codm=Consultas.codm
Consultas)
17. FULL OUTER (Álgebra relacional)
Relação L ×1
Relação R
● Mantém cada tupla de R e de S na tabela de junção e preenche com valores nulos as tuplas
que não correspondem à coluna de junção
σnome=’Joao’
(Medicos ×Medicos.codm=Consultas.codm
Consultas)
18. NATURAL JOIN
● Realiza um JOIN nas colunas com o mesmo nome.
SELECT *
FROM Ambulatorios
NATURAL JOIN Medicos
19. NATURAL JOIN (Álgebra relacional)
Relação L ⋈ Relação R
● Realiza uma junção entre todos os atributos de mesmo
nome presentes em duas relações.
Ambulatorios ⋈ Medicos
20. Exercícios
11. Retornar a lista de Médicos e suas Consultas
12. Retornar uma lista de Pacientes e suas Consultas
13. Retornar os horários de consultas de cada Ambulatório
14. Retornar os horários de consultas de cada Médico
15. Retornar os horários de consultas de cada Paciente
23. União
● Permite combinar informações de diversas tabelas
● Exemplo:
SELECT nome,idade
FROM Medicos
UNION
SELECT nome,idade
FROM Funcionarios
24. INTERSECT (Álgebra relacional)
Relação 1 ∩ Relação 2
● Retorna apenas resultados que são iguais entre duas relações
πnome
(Medicos) ∩ πnome
(Funcionários)
25. Intersecção
● Retorna apenas resultados que são iguais entre duas relações
● Exemplo:
SELECT nome
FROM Medicos
INTERSECT
SELECT nome
FROM Funcionarios
26. EXCEPT(Álgebra relacional)
Relação 1 - Relação 2
● Retorna apenas resultados da Relação 1 que não estão na Relação 2
πnome
(Medicos) - πnome
(Funcionários)
27. Exceção
● Retorna apenas resultados que são iguais entre duas relações
● Exemplo:
SELECT nome
FROM Medicos
EXCEPT
SELECT nome
FROM Funcionarios
28. Exercícios
16. Usando UNION e INTERSECT, retornar Médicos e Pacientes que tenham o
mesmo nome
17. Retornar uma lista sem repetições de nomes de Pacientes, Funcionários e
Médicos
18. Retornar uma lista sem repetições de cidades de Pacientes, Funcionários e
Médicos
19. Retornar a média, máximo, mínimo de idade de Pacientes, Funcionários e
Médicos
20. Retornar todas cidades que possuem Médicos cadastrados, mas que não
possuem Pacientes