Quando você tem tabelas que a resposta de uma consulta pode estar relacionada em outra tabela, muitas vezes para exibirmos de maneira simplificada precisamos fazer esses tipos de consultas um pouco mais complexas .
Então vamos ver de forma mais simples para pegar o jeito de uma vez por todas. Lembrando que se você não possuir um banco de dados, nesse caso o MySQL instalado, você pode testar essas consultas online com uma das ferramentas apresentadas nesse artigo: Conheça 7 Serviços OnLine para Executar seus Comandos SQL
Uma cláusula JOIN é usada para combinar linhas de duas ou mais tabelas, com base em uma coluna relacionada entre elas.
Aqui estão os diferentes tipos de JOINs no SQL:
Para explicar como funciona essas consultas vamos usar esse banco de dados examples_joins.sql . Se quiser importar a tabela use esse comando:
-u
informa o usuário;-p
informa que precisa inserir senha;exit
ou quit
, rode o comando abaixo para importar a base:
Lembrando que o arquivo precisa estar no mesmo diretório que você fará a importação.
USE examples_joins;
para mudar/definir a base para uso. E rode um SHOW TABLES
para verificar as tabelas. Veja as imagens abaixo:
-D
informa a base de dados;SELECT * FROM NOME_DE_ALGUMA_TABELA
:
Retorna registros que possuem valores correspondentes nas duas tabelas.
AS
cria uma alias(apelido v) para a tabela vendas e outros para a tabela clientes(apelido c)Alternativamente você poderia fazer esse INNER JOIN sem usar a cláusula AS
para aliases, assim:
Eu prefiro usar o
AS
pra não acabar me confundindo mais tarde. =)
Retorna todos os registros da tabela esquerda e os registros correspondentes da tabela direita.
ou
Retorna todos os registros da tabela da direita e os registros correspondentes da tabela da esquerda.
ou
Podemos tiras nossas conclusões a partir dessa essa imagem abaixo e notar as difereças de cada um dos tipos de consultas.
DICAS EXTRAS: Se quiser exportar a base de dados, caso você faça alguma alteração, rode o comando:
E na importação, se tiver problemas com codifição(uso de letras com acentos por exemplo), importe assim: