JOIN

O Inner Join  tem como objetivo aglutinar duas ou mais tabelas mediante atributos comuns que estão presentes nas mesmas, onde para realizarmos esta junção, utilizamos as chaves primárias / estrangeiras.

Dentre as vantagens de se utilizar o Inner Join, podemos considerar:

  1. Sua sintaxe ser mais organizada e facíl de compreender;
  2. Facilidade para se achar o melhor plano de ação para realizar consultas.

Inner Join

Sintaxe

select <campos> from <tabela 1>
inner join <tabela 2> on <campo tabela 1> = <campo tabela 2>

select * from instituto_aluno
inner join instituto_curso on (alun_curs_id = curs_id);

Exemplos

select * from instituto_aluno a
inner join instituto_curso c on (a.alun_curs_id = c.curs_id);

Equivalente

select * from instituto_aluno a,instituto_curso c where a.alun_curs_id = c.curs_id;

OBS: No INNER JOIN, caso alguma tabela tenha algum campo em branco, o resultado será omitido.

Para deixar mais completa, pode adicionar a cláusura where, order e etc

O uso do INNER é opcional.

CROSS JOIN

Esse não é bem um tipo de junção, é conhecido como conexão cruzada, ou seja, resulta no cruzamento de cada linha de uma tabela com todas as linhas de outra tabela.

Sintaxe

select <campos> from <tabela 1>
cross join <tabela 2>

select * from instituto_aluno, instituto_curso;

Equivalente

select * from instituto_aluno a
inner join instituto_curso c ;

LEFT JOIN

Similar ao INNER JOIN, porém ele trás todos os campos das tabelas A e B, mesmo que a tabela A tenha algum campo vazio.

Sintaxe

select <campos> from <tabela 1>
left join <tabela 2> on <campo tabela 1> = <campo tabela 2>

select * from instituto_aluno
left join instituto_curso on (alun_curs_id = curs_id);

Exemplos

select * from instituto_aluno a
left join instituto_curso c on (a.alun_curs_id = c.curs_id);

Para deixar mais completa, pode adicionar a cláusura where, order e etc

RIGHT JOIN

Similar ao INNER JOIN, porém ele trás todos os campos das tabelas A e B, mesmo que a tabela B tenha algum campo vazio.

Sintaxe

select <campos> from <tabela 1>
right join <tabela 2> on <campo tabela 1> = <campo tabela 2>

select * from instituto_aluno
right join instituto_curso on (alun_curs_id = curs_id);

Exemplos

select * from instituto_aluno a
right join instituto_curso c on (a.alun_curs_id = c.curs_id);

Para deixar mais completa, pode adicionar a cláusura where, order e etc

Para que servem os outer joins?

Servem para fazer as junções entre duas ou mais tabelas, cruzando informações, combinando registros, testando desigualdades.

OUTER JOINS

Sintaxe

select <campos> from <tabela 1>
full outer join <tabela 2> on <campo tabela 1> = <campo tabela 2>

select * from instituto_aluno
full outer join instituto_curso on (alun_curs_id = curs_id);

Exemplos

select * from instituto_aluno a
full outer join instituto_curso c on (a.alun_curs_id = c.curs_id);

select * from instituto_aluno a
full outer join instituto_curso c on (a.alun_curs_id = c.curs_id)

where a.alun_curs_id is null or c.curs_id is null;

Made with Slides.com