O documento explica os diferentes tipos de JOIN no SQL, incluindo INNER JOIN, OUTER JOIN e SELF JOIN. Discute como o JOIN permite obter informações de várias tabelas usando uma única instrução SELECT, ligando as tabelas através de chaves primárias e estrangeiras. Também explica o que é um produto cartesiano e como o WHERE clause pode ser usado para especificar condições de JOIN.
1. JOIN
MySQL
O comando SELECT
Escola Secundária
D. Afonso Sanches
Vila do Conde
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
2. Índice:
O que é o “JOIN”?
Ligação entre tabelas: chaves estrangeiras e chaves primárias
Sintaxe geral do comando SELECT recorrendo ao JOIN
Produto cartesiano de tabelas
INNER JOIN
OUTER JOIN
UNION
SELF JOIN
INTERSECT
MINUS
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
3. O que é o “JOIN”?
O Join permite obter informação a partir de várias tabelas, recorrendo apenas a um único comando
SELECT.
Note que:
o Modelo Relacional estabelece claramente as regras para a divisão da informação entre tabelas, de forma a evitar a redundância na informação;
para interligar as várias tabelas são utilizadas as chaves primárias de cada uma delas;
● as chaves primárias de uma tabela são utilizadas nas outras tabelas, na qualidade de chaves estrangeira, permitindo desta forma a sua interligação.
●
●
Pessoa
Localidade
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
4. Chave primária
A chave primária (Primary Key)é, no contexto das bases de dados relacionais, o conjunto de um ou
mais campos, cujos valores nunca se repetem e que podem ser usadas como um índice para os demais
campos da tabela.
Quando um campo é chave primária, não pode haver valores nulos nem repetições do seu conteúdo.
Exemplo: Pessoa (bi, nome, ...)
bi
nome
...
123
Ana
...
543
Maria
...
342
Carla
...
654
Joana
...
bi
nome
...
123
Ana
...
543
Maria
...
342
Carla
...
123
Joana
...
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
5. Chave estrangeira
Uma chave estrangeira (foreign key) é um campo que aponta para a chave primária de outra tabela, o
que torna possível estabelecer o relacionamento entre ambas.
O recurso às chaves estrangeiras possibilita garantir a integridade referencial dos dados "dispersos"
pelas várias tabelas de acordo com as regras definidas para o modelo relacional.
Exemplo: Pessoa (bi, nome, cpostal)
Localidade( cp, nomelocalidade)
Pessoa
bi
nome
cpostal
123
Ana
1000
543
Maria
4000
342
Carla
4480
654
Joana
Chave estrangeira
4480
Localidade
cp
1000
Lisboa
4000
Chave primária
nomelocalidade
Porto
4480
Vila do Conde
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
6. Sintaxe geral do comando SELECT recorrendo ao JOIN
A junção de tabelas faz-se indicando o nome das mesmas na cláusula FROM:
SELECT campo1, campo2, campo3, ..., campon, *
FROM tabela1, tabela2, … tabelak
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
7. Produto Cartesiano (Cross- JOIN)
Na Matemática, dados dois conjuntos X e Y, o produto cartesiano (ou produto directo) dos dois
conjuntos (escrito como X × Y) é o conjunto de todos os pares ordenados cujo primeiro elemento
pertence a X e o segundo, a Y.
No nosso contexto, o produto cartesiano das duas tabelas Pessoa e Localidade é:
Pessoa
Pessoa x Localidade
#4
Localidade
#3
Equi-Join
# 4 x 3 = 12
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
8. Natural Join
Como vimos no diapositivo anterior, quando a ligação entre duas tabelas é realizada através da
igualdade entre duas colunas, este tipo particular de join designa-se equi-join.
Um natural-join existe quando todas as colunas envolvidas na ligação entre as tabelas são apresentadas
sem repetição de colunas.
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
9. Inner Join
O Inner Join corresponde a uma outra designação para o join habitual em que se juntam duas ou mais
tabelas, ligando-as através da chave primária de uma e da chave estrangeira de outra.
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
10. Inner Join
Outra forma de obter exactamente o mesmo resultado consiste em recorrer explicitamente à cláusula
Inner Join, como é demonstrado a seguir:
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
11. Outer Join (left join e right join)
O papel do Outer Join é permitir que a totalidade das linhas de uma tabela seja obtida, ainda que não
exista o correspondente valor na outra tabela a que está ligada pela junção.
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
12. Union
Uma união não é propriamente uma ligação entre tabelas.
A UNION permite juntar o conteúdo de dois ou mais comandos SELECT.
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
13. Um exemplo (pimba) de utilização do inner join
A base de dados tem o seguinte modelo.
Graciano Torrão
( http://gracianotorrao.com )
Programação e Sistemas de Informação
17. Dúvidas?
Escola Secundária
D. Afonso Sanches
Vila do Conde
Graciano Torrão
17
( graciano.torrao@gmail.com )
( http://gracianotorrao.com )
Programação e Sistemas de Informação