O operador SQL INTERSECT combina duas instruções select e retorna apenas o conjunto de dados que é comum em ambas as instruções. Simplificando, ele atua como uma interseção matemática. Em matemática, a interseção de A e B são os dados comuns presentes em A e B. Assim, quando você fornece duas consultas selecionadas para combinar, o SQL INTERSECT retornará apenas as linhas comuns de ambas as consultas SELECT. Semelhante ao operador UNION no SQL, até mesmo o operador INTERSECT deve obedecer pelas duas regras a seguir para uma execução bem-sucedida:
- O número e a ordem das colunas em ambas as consultas devem ser iguais
- Os tipos de dados das colunas correspondentes de ambas as consultas selecionadas devem ser compatíveis entre si
O diagrama descrito abaixo ajudará você a entender melhor.
Como mostra o diagrama, quando você cruza a consulta 1 (verde) e a consulta 2 (azul), o resultado será a interseção das duas, a cor cinza no diagrama acima.
Como usar o operador SQL INTERSECT?
Você pode usar o operador SQL INTERSECT para combinar linhas de duas consultas usando a seguinte sintaxe.
SELECIONE coluna1 [, coluna2]
FROM table1 [, table2]
[condição WHERE]
INTERSECT
SELECIONE coluna1 [, coluna2]
FROM table1 [, table2]
[condição WHERE]
Como você pode ver na sintaxe acima, o número de colunas e seus tipos de dados precisam ser iguais para que o SQL INTERSECT funcione de forma eficiente.
Exemplo de operador SQL INTERSECT
Usando a sintaxe acima, você pode usar o SQL INTERSECT Operator. Aqui está um exemplo de INTERSECT do SQL Server que o ajudará a entender esse conceito.
Primeiro, você começará criando duas tabelas que você usará no exemplo e inserir alguns valores neles.
CRIAR clientes TABLE (
ID INT PRIMARY KEY,
Nome VARCHAR (20),
País VARCHAR (20),
Cidade VARCHAR (20)
);
INSERIR NOS VALORES DE CLIENTES (1,’Aakash’,’INDIA’,’Mumbai’);
INSERIR NOS VALORES DE CLIENTES (2,’George’,’EUA’,’Nova York’);
INSERIR NOS VALORES DE CLIENTES (3,’David’,’INDIA’,’Bangalore’);
INSERIR NOS VALORES DE CLIENTES (4,’Leo’,’ESPANHA’,’Madrid’);
INSERIR NOS VALORES DE CLIENTES (5,’Rahul’,’INDIA’,’Delhi’);
INSERT INTO Customers VALUES (6,’Brian’,’USA’,’Chicago’);
INSERIR NOS VALORES DE CLIENTES (7,’Justin’,’ESPANHA’,’Barcelona’);
SELECIONE * DOS clientes;
Resultado:
Isso criará a tabela Clientes, com as colunas ID, Nome, País e Cidade. A segunda tabela será a tabela Ramos, com as informações sobre os ramos de uma loja e inclui colunas Branch_Code, País e Cidade. Veja como você pode criar a tabela.
CRIAR ramos TABLE (
Branch_Code INT PRIMARY KEY,
País VARCHAR (20),
Cidade VARCHAR (20)
);
INSERIR NOS VALORES DAS filiais (101,’INDIA’,’Mumbai’);
INSERIR NOS VALORES das filiais (201,’INDIA’,’Bangalore’);
INSERT INTO Branch VALUES (301,’USA’,’Chicago’);
INSERT INTO Branch VALUES (401,’USA’,’New York’);
INSERT INTO Branch VALUES (501,’ESPANHA’,’Madrid’);
SELECIONE * DE ramos;
Resultado:
Agora que as duas tabelas foram criadas, use o operador SQL INTERSECT para ver como ele funciona para fornecer as linhas comuns.
SELECIONE país, cidade
DE clientes
INTERSECT
SELECIONE país, cidade
FROM ramos
ORDENAR POR Cidade;
Resultado:
A primeira consulta selecionará países e cidades de todas as linhas da tabela Clientes no exemplo acima. Da mesma forma, a segunda consulta selecionará todos os países e cidades da tabela Ramos. Quando você usa o operador SQL INTERSECT aqui, ele busca e fornece apenas os valores comuns de ambas as consultas. Portanto, a consulta não inclui a cidade de Delhi e Barcelona na saída. Isso porque essas são as duas cidades que não estão disponíveis na tabela Ramos.
Observação: este exemplo também usou o ORDER BY cláusula no exemplo para classificar os resultados.
Quais são os usos do SQL INTERSECT Operator?
O operador SQL INTERSECT é útil em várias situações. É melhor quando você deseja buscar linhas comuns entre os resultados de duas instruções ou consultas select.
Você pode pensar que o operador AND pode ajudar a encontrar valores de dados comuns, então por que usar o operador INTERSECT?
A razão é que o SQL INTERSECT funciona em linhas, mas o operador AND funciona em colunas. Você vai passar por isso em detalhes enquanto explora os usos do operador SQL INTERSECT. Você já viu a vantagem de cruzar duas tabelas no exemplo anterior, onde usou o operador na tabela Clientes e Ramos para cruzar e encontrar as cidades comuns. O outro uso é:
Encontrando linhas comuns na mesma tabela
Para este exemplo, vamos tentar encontrar os cargos em uma empresa ocupada por homens e mulheres. Você começará criando a tabela HR e, em seguida, buscará a saída usando o operador SQL INTERSECT.
CRIAR Tabela HR (
ID INT,
Nome VARCHAR (20),
Título VARCHAR (20),
Sexo VARCHAR (1),
Idade INT
);
INSERT INTO HR VALUES (1,’George’,’Sales Representative’,’M’, 23);
INSERT INTO HR VALUES (2,’Divya’,’Receptionist’,’F’, 21);
INSERT INTO HR VALUES (3,’David’,’Sales Representative’,’M’, 27);
INSERT INTO HR VALUES (4,’Kailash’,’Manager’,’M’, 25);
INSERT INTO HR VALUES (5,’Jenifer’,’Sales Representative’,’F’, 23);
INSERT INTO HR VALUES (6,’Rachel’,’Manager’,’F’, 26);
INSERIR NOS VALORES DE RH (7,’Aakash’,’Desenvolvimento de negócios’,’M’, 28);
SELECIONE * DO RH;
Resultado:
Como você pode ver na saída, Recepcionista e Desenvolvimento de Negócios são os únicos dois títulos que não possuem funcionários do sexo masculino e feminino. Vamos ver se o operador INTERSECT pode buscar os resultados corretamente.
SELECIONE o título
DO RH
ONDE Gênero=’M’
INTERSECT
SELECIONE o título
DO RH
ONDE Gênero=’F’
Resultado:
Como você pode ver, o operador INTERSECT buscou corretamente os resultados esperados. Se você tiver usado o operador AND aqui, não teria funcionado. Isso ocorre porque o operador AND teria buscado os resultados onde a mesma linha teria masculino e feminino. Portanto, você não teria nenhuma saída.
SELECIONE o título
DO RH
ONDE gênero=’M’
AND gênero=’F’;
Não haverá saída para esta consulta.
Ordenando o resultado da produção
Você pode usar a cláusula ORDER BY para ordenar a saída em ordem crescente. Primeiro, você adicionará uma linha com o título de recepcionista e gênero masculino em nossa tabela de RH para ver em ação.
INSERT INTO HR VALUES (8,’Brian’,’Recepcionista’,’M’, 32);
SELECIONE * DO RH
WHERE ID=8;
Resultado:
Conforme a saída confirma, ele adicionou a nova linha à tabela. Agora, você usará o operador SQL INTERSECT com a cláusula ORDER BY e verá como ele ordena a saída.
SELECIONE o título
DO RH
ONDE Gênero=’M’
INTERSECT
SELECIONE o título
DO RH
ONDE Gênero=’F’
ORDENAR POR título;
Resultado:
Como você pode ver na saída, foi ordenado alfabeticamente com base no título.
Ganhe experiência nas mais recentes ferramentas e técnicas de análise de negócios com o Programa de certificação de analista de negócios . Inscreva-se agora!
Conclusão
Neste artigo, você aprendeu sobre o operador SQL INTERSECT junto com exemplos. Ele funciona de forma semelhante a uma interseção matemática e busca as linhas com valores de coluna comuns. Agora você pode ajustar os códigos e ampliar as tabelas inserindo mais linhas para jogar com o operador INTERSECT. Se você quiser aprender mais sobre esses conceitos fundamentais, pode optar pelo Curso de treinamento de certificação de SQL da Simplilearn . O curso fornece materiais de aprendizagem individualizados e conhecimento profundo de todos os conceitos SQL básicos e avançados essenciais. Fazer o curso garantirá a você uma certificação reconhecida globalmente e o ajudará a se destacar no gerenciamento de banco de dados SQL.
Se você tiver alguma dúvida sobre este tutorial “interseção de SQL” para nós, sinta-se à vontade para compartilhá-la nos comentários no final desta página. Nossos especialistas farão o mesmo, no mínimo!