Study Notes
Data

SQL

Structured Query Language é uma linguagem declarativa padrão para manipular bancos de dados relacionais. Ela é fundamentada em conceitos da Teoria de Conjuntos/álgebra relacional e elementos práticos que se desviam da teoria pura para atender às necessidades de bancos de dados reais.

JOIN Operation

É a operação para juntar dados de duas tabelas. Por default ocorre o produto cartesiano (cross join) durante a junção, exemplo: SELECT * FROM A JOIN B.

Observação: Para LEFT, RIGHT e FULL (ou seja, tirando INNER) JOINS é opcional adicionar a palavra OUTER (externo, que não é inner). Exemplo: LEFT OUTER JOIN.

sql_joins_types.excalidraw.svg

Considere as tabelas abaixo:

idnomedepartamento_id
11Marcio1
12Carlos2
13Miguel3
14Carol4
15Sebastiannull
16Rodrigo Dias6
Tabela funcionários.
idnome
1RH
2TI
3Vendas
4Desenvolvimento
5Marketing
Tabela departamentos.

INNER JOIN

Só retorna as linhas que possuem correspondência exata entre f.departamento_id = d.id, a intersection entre as duas tabelas.

SELECT f.nome AS nome_func,d.nome AS nome_dep
FROM funcionarios AS f 
INNER JOIN departamentos AS d ON f.departamento_id = d.id;
nome_funcnome_dep
MarcioRH
CarlosTI
MiguelVendas
CarolDesenvolvimento

LEFT/RIGHT JOIN

Listar todos os funcionários (no caso do left join e o funcionários na esquerda do join), independente de terem ou não um departamento correspondente. O right

SELECT f.nome AS nome_func,d.nome AS nome_dep
FROM funcionarios AS f 
LEFT JOIN departamentos AS d ON f.departamento_id = d.id;
nome_funcnome_dep
MarcioRH
CarlosTI
MiguelVendas
CarolDesenvolvimento
Sebastiannull
Rodrigo Diasnull

FULL JOIN

Junta as linhas que têm correspondência e, para as que não têm, preenche o lado oposto com NULL.

SELECT f.nome AS nome_func,d.nome AS nome_dep
FROM funcionarios AS f 
FULL JOIN departamentos AS d ON f.departamento_id = d.id;
nome_funcnome_dep
MarcioRH
CarlosTI
MiguelVendas
CarolDesenvolvimento
Sebastiannull
Rodrigo Diasnull
nullMarketing

On this page