INF 325 - Operações de conjuntos sobre tabelas

Prof. Célio Guimarães     IC - Unicamp

Atualizado em 12 Julho 2020

As operações da teoria de conjuntos, união, interseção, subtração e multiplicação são suportadas pelo padrão SQL. As 3 primeiras usam as palavras reservadas union, intersect, minus, e requerem que as tabelas envolvidas sejam compatíveis quanto à união, isto é, tenham o mesmo número de colunas e seus atributos correspondentes sejam do mesmo tipo.
Mysql implementa apenas union, mas interseção e subtração podem ser implementadas através de subconsultas com os operadores in e not in, respectivamente, e com recursos adicionais. Vamos apresentá-las através de exemplos:
união: "Obtenha uma lista de todas as pessoas presentes na tabela D(p,f)"

select p from D
union
select f from D

interseção: "Obtenha os nomes dos jogadores que ganharam um ou mais torneios"
select nome from jogadores
where numj in
(select numj from torneios)
neste exemplo a interseção aparece como uma projeção na coluna numj da tabela jogadores intersectada com a coluna numj da tabela torneios.

subtração: "Obtenha uma lista dos nomes e números dos jogadores que não ganharam torneios"

select nome, numj from jogadores
where numj not in
(select numj from torneios)