domingo, 14 de outubro de 2012

Teoria dos conjuntos em junções SQL

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.

Nenhum comentário:

Postar um comentário