SlideShare uma empresa Scribd logo
1 de 17
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
Í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
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
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
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
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
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
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
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
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
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
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
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
Graciano Torrão
( http://gracianotorrao.com )

Programação e Sistemas de Informação
Graciano Torrão
( http://gracianotorrao.com )

Programação e Sistemas de Informação
Graciano Torrão
( http://gracianotorrao.com )

Programação e Sistemas de Informação
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

Mais conteúdo relacionado

Destaque

Progweb Aula8
Progweb Aula8Progweb Aula8
Progweb Aula8softeam
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHPLeonardo Soares
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQLMySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS Antonio Pedro
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchDaniel Brandão
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Cadangan skrip-jawapan-kertas-3-spm-2014-bahagian-b
Cadangan skrip-jawapan-kertas-3-spm-2014-bahagian-bCadangan skrip-jawapan-kertas-3-spm-2014-bahagian-b
Cadangan skrip-jawapan-kertas-3-spm-2014-bahagian-bMohd Muzlimi Junoh
 
Modelos de banco de dados
Modelos de banco de dadosModelos de banco de dados
Modelos de banco de dadosEdgar Stuart
 

Destaque (12)

Progweb Aula8
Progweb Aula8Progweb Aula8
Progweb Aula8
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
MySQL - the database
MySQL - the databaseMySQL - the database
MySQL - the database
 
My sql apresentação
My sql apresentaçãoMy sql apresentação
My sql apresentação
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL Workbench
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Cadangan skrip-jawapan-kertas-3-spm-2014-bahagian-b
Cadangan skrip-jawapan-kertas-3-spm-2014-bahagian-bCadangan skrip-jawapan-kertas-3-spm-2014-bahagian-b
Cadangan skrip-jawapan-kertas-3-spm-2014-bahagian-b
 
Modelos de banco de dados
Modelos de banco de dadosModelos de banco de dados
Modelos de banco de dados
 

O comando SELECT (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
  • 14. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  • 15. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  • 16. 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