SlideShare uma empresa Scribd logo
SQL: joins
Luiz Henrique Zambom Santana
22/09/2016
Agenda
● INNER JOIN
● OUTER (LEFT/RIGHT/FULL) JOIN
● NATURAL JOIN
● Operações sobre conjuntos
Relembrando...
Relembrando...
SQL Álgebra relacional
SELECT projeção
FROM produto
cartesiano
WHERE seleção
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
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
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))
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
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
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)
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
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
LEFT OUTER JOIN
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)
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
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)
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)
NATURAL JOIN
● Realiza um JOIN nas colunas com o mesmo nome.
SELECT *
FROM Ambulatorios
NATURAL JOIN Medicos
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
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
Operações sobre conjuntos
SQL Álgebra relacional
UNION U
INTERSECT ⋂
EXCEPT -
UNION (Álgebra relacional)
Relação 1 U Relação 2
● Une os resultados de um conjunto de relações
σnome=’Joao’
(Medicos U Consulta)
União
● Permite combinar informações de diversas tabelas
● Exemplo:
SELECT nome,idade
FROM Medicos
UNION
SELECT nome,idade
FROM Funcionarios
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)
Intersecção
● Retorna apenas resultados que são iguais entre duas relações
● Exemplo:
SELECT nome
FROM Medicos
INTERSECT
SELECT nome
FROM Funcionarios
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)
Exceção
● Retorna apenas resultados que são iguais entre duas relações
● Exemplo:
SELECT nome
FROM Medicos
EXCEPT
SELECT nome
FROM Funcionarios
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
Resumo

Mais conteúdo relacionado

Mais procurados (10)

Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
 
Sql basico postgresql_v12
Sql basico postgresql_v12Sql basico postgresql_v12
Sql basico postgresql_v12
 
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub SelectsBD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
 
Techideias excel avançado v2012
Techideias excel avançado v2012Techideias excel avançado v2012
Techideias excel avançado v2012
 
Enums
EnumsEnums
Enums
 
Apostila formulas excel
Apostila formulas excelApostila formulas excel
Apostila formulas excel
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 
Aula 300309
Aula 300309Aula 300309
Aula 300309
 
7 sql3
7 sql37 sql3
7 sql3
 

Semelhante a SQL Joins (10)

Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
SQL.ppt
SQL.pptSQL.ppt
SQL.ppt
 
Comandos basicos da linguagem SQL em banco de dados
Comandos basicos da linguagem SQL em banco de dadosComandos basicos da linguagem SQL em banco de dados
Comandos basicos da linguagem SQL em banco de dados
 
Aula calculo relacional
Aula calculo relacionalAula calculo relacional
Aula calculo relacional
 
Sql junções
Sql junçõesSql junções
Sql junções
 
12 SQL - Junções / Join
12 SQL - Junções / Join12 SQL - Junções / Join
12 SQL - Junções / Join
 
Fundamentos de Banco de Dados Linguagem SQL.pptx
Fundamentos de Banco de Dados Linguagem SQL.pptxFundamentos de Banco de Dados Linguagem SQL.pptx
Fundamentos de Banco de Dados Linguagem SQL.pptx
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
 

Mais de Luiz Henrique Zambom Santana

Seminário de Andamento de Doutorado
Seminário de Andamento de DoutoradoSeminário de Andamento de Doutorado
Seminário de Andamento de Doutorado
Luiz Henrique Zambom Santana
 

Mais de Luiz Henrique Zambom Santana (20)

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with Spark
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipe
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
 
Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 3Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 3
 
Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2
 
Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQL
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
 
Normalização
NormalizaçãoNormalização
Normalização
 
Processamento em Big Data
Processamento em Big DataProcessamento em Big Data
Processamento em Big Data
 
Seminário de Andamento de Doutorado
Seminário de Andamento de DoutoradoSeminário de Andamento de Doutorado
Seminário de Andamento de Doutorado
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Workshop de ELK - EmergiNet
Workshop de ELK - EmergiNetWorkshop de ELK - EmergiNet
Workshop de ELK - EmergiNet
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHP
 
Design of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureDesign of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore Architecture
 
An Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesAn Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL Repositories
 

SQL Joins

  • 1. SQL: joins Luiz Henrique Zambom Santana 22/09/2016
  • 2. Agenda ● INNER JOIN ● OUTER (LEFT/RIGHT/FULL) JOIN ● NATURAL JOIN ● Operações sobre conjuntos
  • 4. Relembrando... SQL Álgebra relacional SELECT projeção FROM produto cartesiano WHERE seleção
  • 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
  • 21. Operações sobre conjuntos SQL Álgebra relacional UNION U INTERSECT ⋂ EXCEPT -
  • 22. UNION (Álgebra relacional) Relação 1 U Relação 2 ● Une os resultados de um conjunto de relações σnome=’Joao’ (Medicos U Consulta)
  • 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