A SQL (Structured Query Language) é uma linguagem de programação especialmente designada para gerenciamento de dados em um sistema de banco de dados relacional. Surgida nos anos 70, a SQL foi originalmente baseada na álgebra relacional, uma forma de cálculo sobre conjuntos e relações. Na SQL, algumas das operações de junções entre tabelas podem ser facilmente demonstradas com a teoria dos conjuntos. Os diagramas de Venn simbolizam graficamente as propriedades relativas aos conjuntos e sua teoria.
INNER JOIN
A junção interna é a mais simples e mais comum. Esta consulta retorna somente o conjunto de registros que possuem coincidência entre as tabelas:
SELECT *
FROM TabelaA A
INNER JOIN TabelaB B
ON A.id = B.id
LEFT OUTER JOIN
Esta junção externa à esquerda inclui todos os registros da tabela da esquerda e inclui os registros da tabela da direita apenas quando registros coincidentes são encontrados:
SELECT *
FROM TabelaA A
LEFT OUTER JOIN TabelaB B
ON A.id = B.id
LEFT OUTER JOIN exclusiva
Esta consulta retorna todos os registros da tabela da esquerda que não possuem coincidentes na tabela da direita. É realizado o mesmo LEFT OUTER JOIN, excluindo os registros coincidentes na tabela da direita com a cláusula WHERE:
SELECT *
FROM TabelaA A
LEFT OUTER JOIN TabelaB B
ON A.id = B.id
WHERE B.id IS NULL
RIGHT OUTER JOIN
Esta junção externa à direita inclui todos os registros da tabela da direita e inclui os registros da tabela da esquerda apenas quando registros coincidentes são encontrados:
SELECT *
FROM TabelaA A
RIGHT OUTER JOIN TabelaB B
ON A.id = B.id
RIGHT OUTER JOIN exclusiva
Esta consulta retorna todos os registros da tabela da direita que não possuem coincidentes na tabela da esquerda. É realizado o mesmo RIGHT OUTER JOIN, excluindo os registros coincidentes na tabela da esquerda com a cláusula WHERE:
SELECT *
FROM TabelaA A
RIGHT OUTER JOIN TabelaB B
ON A.id = B.id
WHERE A.id IS NULL
FULL OUTER JOIN
Esta junção externa total produz o conjunto de todos os registros de todas as tabelas, mesmo os registros que não possuem coincidência entre as tabelas:
SELECT *
FROM TabelaA A
FULL OUTER JOIN TabelaB B
ON A.id = B.id
FULL OUTER JOIN exclusiva
Esta junção externa total produz o conjunto de todos os registros únicos das tabelas, excluindo os registros que possuem coincidência entre as tabelas. É realizado o mesmo FULL OUTER JOIN, excluindo os registros que possuem coincidência com a cláusula WHERE:
SELECT *
FROM TabelaA A
FULL OUTER JOIN TabelaB B
ON A.id = B.id
WHERE A.id IS NULL OR B.id IS NULL
Observações:
Nas consultas onde são retornados registros sem coincidência, estes registros recebem o valor NULL.
A junção cruzada (CROSS JOIN), que gera um produto cartesiano das tabelas, não pode ser simbolizada graficamente no diagrama de Venn, pois retorna mais registros que os existentes nos conjuntos originais.
A linguagem SQL possui, além das junções, outros operadores de conjunto da álgebra relacional, entre eles os operadores UNION, INTERSECT e EXCEPT.
INNER JOIN
A junção interna é a mais simples e mais comum. Esta consulta retorna somente o conjunto de registros que possuem coincidência entre as tabelas:
SELECT *
FROM TabelaA A
INNER JOIN TabelaB B
ON A.id = B.id
LEFT OUTER JOIN
Esta junção externa à esquerda inclui todos os registros da tabela da esquerda e inclui os registros da tabela da direita apenas quando registros coincidentes são encontrados:
SELECT *
FROM TabelaA A
LEFT OUTER JOIN TabelaB B
ON A.id = B.id
LEFT OUTER JOIN exclusiva
Esta consulta retorna todos os registros da tabela da esquerda que não possuem coincidentes na tabela da direita. É realizado o mesmo LEFT OUTER JOIN, excluindo os registros coincidentes na tabela da direita com a cláusula WHERE:
SELECT *
FROM TabelaA A
LEFT OUTER JOIN TabelaB B
ON A.id = B.id
WHERE B.id IS NULL
RIGHT OUTER JOIN
Esta junção externa à direita inclui todos os registros da tabela da direita e inclui os registros da tabela da esquerda apenas quando registros coincidentes são encontrados:
SELECT *
FROM TabelaA A
RIGHT OUTER JOIN TabelaB B
ON A.id = B.id
RIGHT OUTER JOIN exclusiva
Esta consulta retorna todos os registros da tabela da direita que não possuem coincidentes na tabela da esquerda. É realizado o mesmo RIGHT OUTER JOIN, excluindo os registros coincidentes na tabela da esquerda com a cláusula WHERE:
SELECT *
FROM TabelaA A
RIGHT OUTER JOIN TabelaB B
ON A.id = B.id
WHERE A.id IS NULL
FULL OUTER JOIN
Esta junção externa total produz o conjunto de todos os registros de todas as tabelas, mesmo os registros que não possuem coincidência entre as tabelas:
SELECT *
FROM TabelaA A
FULL OUTER JOIN TabelaB B
ON A.id = B.id
FULL OUTER JOIN exclusiva
Esta junção externa total produz o conjunto de todos os registros únicos das tabelas, excluindo os registros que possuem coincidência entre as tabelas. É realizado o mesmo FULL OUTER JOIN, excluindo os registros que possuem coincidência com a cláusula WHERE:
SELECT *
FROM TabelaA A
FULL OUTER JOIN TabelaB B
ON A.id = B.id
WHERE A.id IS NULL OR B.id IS NULL
Observações:
Nas consultas onde são retornados registros sem coincidência, estes registros recebem o valor NULL.
A junção cruzada (CROSS JOIN), que gera um produto cartesiano das tabelas, não pode ser simbolizada graficamente no diagrama de Venn, pois retorna mais registros que os existentes nos conjuntos originais.
A linguagem SQL possui, além das junções, outros operadores de conjunto da álgebra relacional, entre eles os operadores UNION, INTERSECT e EXCEPT.
Nenhum comentário:
Postar um comentário