logo

Como usar IN em SQL

Neste artigo SQL, você aprenderá como usar a palavra-chave IN nas consultas do banco de dados SQL.

algoritmo de classificação por inserção

O que é a palavra-chave IN em SQL?

O EM é um operador lógico na Linguagem de Consulta Estruturada que permite aos usuários do banco de dados definir mais de um valor na cláusula WHERE.

A cláusula WHERE com o operador IN mostra os registros no resultado que correspondem ao conjunto de valores fornecido. Também podemos especificar a subconsulta entre parênteses do operador IN.

Podemos usar o operador IN com as consultas INSERT, SELECT, UPDATE e DELETE no banco de dados SQL.

O operador IN em SQL substitui o processo de múltiplas condições OR em consultas.

Sintaxe do operador IN:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name IN (Value_1, Value_2, Value_3, ......., Value_N); 

Se quiser usar o operador IN nas instruções SQL, você deve seguir as etapas abaixo na mesma sequência:

  1. Crie um banco de dados em SQL.
  2. Crie a nova tabela SQL.
  3. Insira os dados na tabela.
  4. Visualize os dados inseridos.
  5. Use o operador SQL IN para exibir os dados da tabela.

Agora, vamos explicar resumidamente cada etapa, uma por uma, com o melhor exemplo de SQL:

Etapa 1: Crie um novo banco de dados simples

A primeira etapa é criar um novo banco de dados em Structured Query Language.

A seguinte instrução CREATE cria o novo Mecânica_Faculdade Banco de dados no servidor SQL:

 CREATE Database Mechanical_College; 

Passo 2: Crie uma nova tabela

Agora, use a seguinte sintaxe SQL que auxilia na criação da nova tabela no banco de dados:

 CREATE TABLE table_name ( 1st_Column data type (character_size of 1st Column), 2nd_Column data type (character_size of the 2nd column ), 3rd_Column data type (character_size of the 3rd column), ... 
 Nth_Column data type (character_size of the Nth column) ); 

A seguinte instrução CREATE cria o Faculdade_Info mesa no Mecânica_Faculdade Base de dados:

 CREATE TABLE Faculty_Info ( Faculty_ID INT NOT NULL PRIMARY KEY, Faculty_First_Name VARCHAR (100), Faculty_Last_Name VARCHAR (100), Faculty_Dept_Id INT NOT NULL, Faculty_Joining_DateDATE, Faculty_City Varchar (80), Faculty_Salary INT ); 

Etapa 3: insira os dados na tabela

As seguintes consultas INSERT inserem os registros de Faculdades na tabela Faculdade_Info:

 INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1001, Arush, Sharma, 4001, 2020-01-02, Delhi, 20000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1002, Bulbul, Roy, 4002, 2019-12-31, Delhi, 38000 ); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Sharma, 4001, 2020-10-10, Mumbai, 45000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1005, Shivani, Singhania, 4001, 2019-07-15, Kolkata, 42000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary) VALUES (1006, Avinash, Sharma, 4002, 2019-11-11, Delhi, 28000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Joining_Date, Faculty_City, Faculty_Salary)VALUES (1007, Shyam, Besas, 4003, 2021-06-21, Lucknow, 35000); 

Etapa 4: visualizar os dados inseridos

A instrução SELECT a seguir exibe os dados da tabela Faculdade_Info:

 SELECT * FROM Faculty_Info; 

Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Sobrenome_Nome Faculdade_Dept_Id Faculdade_Ingresso_Data Faculdade_Cidade Corpo Docente_Salário
1001 urso Sharma 4001 2020-01-02 Délhi 20.000
1002 Bulbul Roy 4002 31/12/2019 Délhi 38.000
1004 Saurabh Roy 4001 2020-10-10 Bombaim 45.000
1005 Shivani Singhânia 4001 15/07/2019 Calcutá 42.000
1006 Avinash Sharma 4002 11/11/2019 Délhi 28.000
1007 Tímido Você beija 4003 2021-06-21 Luck agora 35.000

Etapa 5: use o operador IN para visualizar os dados da tabela Faculdade_Info de diferentes maneiras

A consulta a seguir usa valores numéricos com o operador IN:

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Dept_Id, Faculty_Joining_Date, Faculty_Salary FROM Faculty_Info WHERE Faculty_Salary IN ( 38000, 42000, 45000, 35000); 

Esta consulta mostra apenas o cadastro das Faculdades cujo salário é repassado no operador IN da cláusula WHERE.

Saída:

Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Dept_Id Faculdade_Ingresso_Data Corpo Docente_Salário
1002 Bulbul 4002 31/12/2019 38.000
1004 Saurabh 4001 2020-10-10 45.000
1005 Shivani 4001 15/07/2019 42.000
1007 Tímido 4003 2021-06-21 35.000

A consulta a seguir usa valores de texto ou caracteres com o operador lógico IN:

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Joining_Date, Faculty_City FROM Faculty_Info WHERE Faculty_City IN ( Mumbai, Kolkata, Lucknow); 

Esta consulta mostra apenas o cadastro das Faculdades cuja cidade está incluída entre parênteses do operador IN na cláusula WHERE.

Saída:

Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Ingresso_Data Faculdade_Cidade
1004 Saurabh 2020-10-10 Bombaim
1005 Shivani 15/07/2019 Calcutá
1007 Tímido 2021-06-21 Luck agora

A consulta a seguir usa DATEformat com operador lógico IN:

 SELECT Faculty_Id, Faculty_First_Name, Faculty_Dept_ID Faculty_Joining_Date, Faculty_Salary FROM Faculty_Info WHERE Faculty_Joining_Date IN (2020-01-02, 2021-06-21, 2020-10-10, 2019-07-15); 

Esta consulta mostra apenas os registros das Faculdades cuja data de adesão é passada no operador IN da cláusula WHERE.

Saída:

Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Dept_Id Faculdade_Ingresso_Data Corpo Docente_Salário
1001 urso 4001 2020-01-02 20.000
1004 Saurabh 4001 2020-10-10 45.000
1005 Shivani 4001 15/07/2019 42.000
1007 Tímido 4003 2021-06-21 35.000

A consulta a seguir usa o comando SQL UPDATE com o operador lógico IN:

char em string java
 UPDATE Faculty_Info SET Faculty_Salary = 50000 WHERE Faculty_Dept_ID IN (4002, 4003); 

Esta consulta atualiza o salário das Faculdades cujo Dept_Id é passado no operador IN da cláusula WHERE.

Para verificar o resultado da consulta acima, digite a seguinte consulta SELECT em SQL:

 SELECT * FROM Faculty_Info; 
Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Sobrenome_Nome Faculdade_Dept_Id Faculdade_Ingresso_Data Faculdade_Cidade Corpo Docente_Salário
1001 urso Sharma 4001 2020-01-02 Délhi 20.000
1002 Bulbul Roy 4002 31/12/2019 Délhi 50.000
1004 Saurabh Roy 4001 2020-10-10 Bombaim 45.000
1005 Shivani Singhânia 4001 15/07/2019 Calcutá 42.000
1006 Avinash Sharma 4002 11/11/2019 Délhi 50.000
1007 Tímido Você beija 4003 2021-06-21 Luck agora 50.000

Operador SQL IN com subconsulta

Na Structured Query Language, também podemos usar a subconsulta com o operador lógico IN.

A sintaxe do operador IN com subconsulta é fornecida abaixo:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name IN (Subquery); 

Se você quiser entender o operador IN com subconsulta, você deve criar as duas tabelas diferentes na linguagem de consulta estruturada usando a instrução CREATE.

A consulta a seguir cria a tabela Faculdade_Info no banco de dados:

 CREATE TABLE Faculty_Info ( Faculty_ID INT NOT NULL PRIMARY KEY, Faculty_First_Name VARCHAR (100), Faculty_Last_Name VARCHAR (100), Faculty_Dept_Id INT NOT NULL, Faculty_Address Varchar (80), Faculty_City Varchar (80), Faculty_Salary INT ); 

A consulta a seguir cria o Departamento_Info tabela no banco de dados:

o que é mac os
 CREATE TABLE Department_Info ( Dept_Id INT NOT NULL, Dept_Name Varchar(100), Head_Id INT ); 

As seguintes consultas INSERT inserem os registros de Faculdades na tabela Faculdade_Info:

 INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1001, Arush, Sharma, 4001, 22 street, New Delhi, 20000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1002, Bulbul, Roy, 4002, 120 street, New Delhi, 38000 ); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1004, Saurabh, Sharma, 4001, 221 street, Mumbai, 45000); INSERT INTO Faculty_Info (Faculty_ID, Faculty_First_Name, Faculty_Last_NameFaculty_Dept_Id, Faculty_Address, Faculty_City, Faculty_Salary) VALUES (1005, Shivani, Singhania, 4001, 501 street, Kolkata, 42000); 

As seguintes consultas INSERT inserem os registros dos departamentos na tabela Department_Info:

 INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4001, Arun, 1005); INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4002, Zayant, 1009); INSERT INTO Department_Info (Dept_ID, Dept_Name, Head_Id) VALUES ( 4003, Manish, 1007); 

A instrução SELECT a seguir exibe os dados da tabela Faculdade_Info:

 SELECT * FROM Faculty_Info; 

Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Sobrenome_Nome Faculdade_Dept_Id Faculdade_Endereço Faculdade_Cidade Corpo Docente_Salário
1001 urso Sharma 4001 Rua 22 Nova Delhi 20.000
1002 Bulbul Roy 4002 Rua 120 Nova Delhi 38.000
1004 Saurabh Roy 4001 Rua 221 Bombaim 45.000
1005 Shivani Singhânia 4001 Rua 501 Calcutá 42.000
1006 Avinash Sharma 4002 Rua 12 Délhi 28.000
1007 Tímido Você beija 4003 Rua 202 Luck agora 35.000

A consulta a seguir mostra os registros do departamento da tabela Department_Info:

 SELECT * FROM Department_Info; 
Como usar IN em SQL

A consulta a seguir usa o operador IN com uma subconsulta:

 SELECT * FROM Faculty_Info WHERE Faculty_Dept_Id IN ( Select Dept_Id FROM Department_Info WHERE Head_Id >= 1007); 

Esta consulta exibe o registro das Faculdades cujo Dept_ID da tabela Faculdade_Info corresponde à tabela Dept_Id da tabela Department_Info.

Saída:

Faculdade_Id Faculdade_Primeiro_Nome Faculdade_Sobrenome_Nome Faculdade_Dept_Id Faculdade_Endereço Faculdade_Cidade Corpo Docente_Salário
1002 Bulbul Roy 4002 Rua 120 Nova Delhi 38.000
1006 Avinash Sharma 4002 Rua 12 Délhi 28.000
1007 Tímido Você beija 4003 Rua 202 Luck agora 35.000

O que NÃO ESTÁ IN no SQL?

O NOT IN é outro operador em Structured Query Language, que é exatamente o oposto do operador SQL IN. Permite acessar esses valores da tabela, o que não passa entre parênteses do operador IN.

O operador NOT IN pode ser usado nas consultas SQL INSERT, UPDATE, SELECT e DELETE.

Sintaxe do operador NOT IN:

 SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name NOT IN (Value_1, Value_2, Value_3, ......., Value_N); 

Se você quiser usar o operador NOT IN nas instruções SQL, você deve seguir os passos indicados na mesma sequência:

  1. Crie um banco de dados no sistema SQL.
  2. Crie a nova tabela no banco de dados.
  3. Insira os dados na tabela
  4. Visualizar os dados inseridos
  5. Use o operador NOT IN para visualizar os dados.

Agora, vamos explicar resumidamente cada etapa, uma por uma, com o melhor exemplo de SQL:

Etapa 1: Crie o novo banco de dados Simples

A consulta a seguir cria o novo Indústria_Civil Banco de dados no servidor SQL:

 CREATE Database Industry; 

Etapa 2: crie a nova tabela

A consulta a seguir cria o Trabalhador_Info mesa no Indústria_Civil Base de dados:

 CREATE TABLE Worker_Info ( Worker_ID INT NOT NULL PRIMARY KEY, Worker_Name VARCHAR (100), Worker_Gender Varchar(20), Worker_Age INT NOT NULL DEFAULT 18, Worker_Address Varchar (80), Worker_Salary INT NOT NULL ); 

Etapa 3: insira os valores

As seguintes consultas INSERT inserem os registros dos trabalhadores na tabela Worker_Info:

 INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1001, Arush, Male, Agra, 35000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1002, Bulbul, Female, Lucknow, 42000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1004, Saurabh, Male, 20, Lucknow, 45000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1005, Shivani, Female, Agra, 28000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1006, Avinash, Male, 22, Delhi, 38000); INSERT INTO Worker_Info (Worker_ID, Worker_Name, Worker_Gender, Worker_Age, Worker_Address, Worker_Salary) VALUES (1007, Shyam, Male, Banglore, 20000); 

Etapa 4: visualizar os dados da tabela

A consulta a seguir exibe os dados da tabela Worker_Info.

 SELECT * FROM Worker_Info; 

ID_trabalhador Nome_trabalhador Trabalhador_Sexo Idade_trabalhador Endereço_trabalhador Trabalhador_Salário
1001 urso Macho 18 Agra 35.000
1002 Bulbul Fêmea 18 Luck agora 42.000
1004 Saurabh Macho vinte Luck agora 45.000
1005 Shivani Fêmea 18 Agra 28.000
1006 Avinash Macho 22 Délhi 38.000
1007 Tímido Macho 18 Bangalore 20.000

Etapa 4: use o operador NOT IN

A consulta a seguir usa o operador NOT IN com dados numéricos:

 SELECT * FROM Worker_Info WHERE Worker_salary NOT IN (35000, 28000, 38000); 

Esta consulta SELECT mostra todos os trabalhadores na saída cujo salário não é repassado no operador NOT IN.

O resultado da afirmação acima é mostrado na tabela a seguir:

inicialização da lista python
ID_trabalhador Nome_trabalhador Trabalhador_Sexo Idade_trabalhador Endereço_trabalhador Trabalhador_Salário
1002 Bulbul Fêmea 18 Luck agora 42.000
1004 Saurabh Macho vinte Luck agora 45.000
1007 Tímido Macho 18 Bangalore 20.000

A consulta a seguir usa o operador lógico NOT IN com valores de caracteres ou de texto:

 SELECT * FROM Worker_Info WHERE Worker_Address NOT IN (Lucknow, Delhi); 

Esta consulta mostra o registro de todos aqueles Trabalhadores cujo endereço não é passado no operador NOT IN.

Saída:

ID_trabalhador Nome_trabalhador Trabalhador_Sexo Idade_trabalhador Endereço_trabalhador Trabalhador_Salário
1001 urso Macho 18 Agra 35.000
1005 Shivani Fêmea 18 Agra 28.000
1007 Tímido Macho 18 Bangalore 20.000