Anda di halaman 1dari 3

Base de Dados II – Abril 2019

Aula Prática – JOINs

Considere a base de dados seguinte:

|codcliente | nome | apelido |codfilme |

1 Aires Veloso 1

2 Manuel Menezes 2

3 Sabino Gomes 5

4 Maria Helena 8

5 Alipio Romulo 10

| codfilme | titulo | categoria |

1 Assassin Creed:Embers Aniamção

2 Real Steel 2012 Aniamção

3 Alvin and the Chipmunks Aniamção

4 The Adventures of Tin Tin Aniamção

5 Safe(2012) Acção

6 Safe House(2012) Acção

7 GIA +18

8 Deadline 2009 +18

9 The Dirty Picture +18

10 Marley and me Romance

PRATICAR OS TIPOS DE JOINS


Cross JOIN _ Cross JOIN é uma forma mais simples de junções que
corresponde a cada linha de uma tabela da base de dados para todas as linhas
da outra tabela.
Exemplo: suponha que queremos obter todos os registros dos clientes que
alugaram filmes contra todos os registros do filme, podemos usar a instrução
abaixo para obter os resultados desejados.
mysql> select * from filmes cross join clientes;
INNER JOIN _ inner join é usado para retornar linhas de ambas as tabelas que
satisfazem a condição fornecida.
Exemplo: suponha que desejamos obter a lista de clientes que alugaram filmes
e respectivos títulos de filmes.
mysql> select nome, apelido, titulo from clientes, filmes where
clientes.codfilme=filmes.codfilme;
ou
mysql> select nome, apelido, titulo from clientes inner join filmes on
clientes.codfilme=filmes.codfilme;

Outer JOINs _ As junções outer joins do MySQL retornam todos os registros


correspondentes de ambas as tabelas.
Ele pode detectar registros sem correspondência na tabela relacionada e retorna
valores NULL para registros de tabela relacionada se nenhuma correspondência
for encontrada.
LEFT JOIN
Suponha que desejamos obter títulos de todos os filmes junto com nomes
dos clientes que alugaram. É claro que alguns filmes não estão sendo
alugados por qualquer um. Podemos simplesmente usar LEFT JOIN para
essa finalidade.
Left Join retorna todas as linhas da tabela à esquerda, mesmo se nenhuma
linha correspondente foi encontrada na tabela à direita. Onde nenhuma
correspondência foi encontrada na tabela à direita, NULL é retornado.
mysql> select titulo, nome, apelido from filmes left join clientes on
clientes.codfilme = filmes.codfilme;
mysql> select titulo, nome, apelido from filmes left outer join clientes on
clientes.codfilme = filmes.codfilme;

RIGHT JOIN
é obviamente o oposto do Left Join. Right Join retorna todas as colunas
da tabela à direita, mesmo se nenhuma linha correspondente tiver sido
encontrada na tabela à esquerda. Onde nenhuma correspondência foi
encontrada na tabela à esquerda, NULL é retornado.
Exemplo: vamos supor que precisamos obter nomes de clientes e filmes
alugados por eles. Agora temos um novo membro que ainda não alugou
nenhum filme.
mysql> select nome, apelido, titulo from clientes right join filmes on
filmes.codfilme = clientes.codfilme;

"ON" and "USING" clauses


Nos exemplos de consulta JOIN acima referidos, usamos a cláusula ON para
corresponder aos registros entre as tabelas.
A cláusula USING também pode ser usada para a mesma finalidade. A
diferença com o USING é que ela precisa ter nomes idênticos para colunas
correspondentes em ambas as tabelas.
No nosso caso as tabelas estão em conformidade com o requisito para o uso da
cláusula USING.
mysql> select titulo, nome, apelido from filmes left join clientes using
(codfilme);

mysql> select titulo, nome, apelido from filmes left join clientes using
(codfilme) where categoria = 'Acção' and codfilme > 5;

Além de usar ON e USING com junções, podemos usar muitas outras cláusulas
no MySQL como GROUP BY, e até mesmo funções como SUM, AVG, etc

Anda mungkin juga menyukai