logo

Come utilizzare IN in SQL

In questo articolo SQL imparerai come utilizzare la parola chiave IN nelle query del database SQL.

Qual è la parola chiave IN in SQL?

IL IN è un operatore logico nello Structured Query Language che consente agli utenti del database di definire più di un valore nella clausola WHERE.

La clausola WHERE con l'operatore IN mostra i record nel risultato che corrispondono al set di valori specificato. Possiamo anche specificare la sottoquery tra parentesi dell'operatore IN.

Possiamo utilizzare l'operatore IN con le query INSERT, SELECT, UPDATE e DELETE nel database SQL.

L'operatore IN in SQL sostituisce il processo di più condizioni OR nelle query.

Sintassi dell'operatore 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 desideri utilizzare l'operatore IN nelle istruzioni SQL, devi seguire i passaggi indicati di seguito nella stessa sequenza:

  1. Creare un database in SQL.
  2. Crea la nuova tabella SQL.
  3. Inserisci i dati nella tabella.
  4. Visualizza i dati inseriti.
  5. Utilizzare l'operatore SQL IN per visualizzare i dati della tabella.

Ora spiegheremo brevemente ogni passaggio uno per uno con il miglior esempio SQL:

Passaggio 1: creare un nuovo database semplice

Il primo passo è creare un nuovo database in Structured Query Language.

La seguente istruzione CREATE crea il nuovo Mechanical_College Database nel server SQL:

 CREATE Database Mechanical_College; 

Passaggio 2: crea una nuova tabella

Ora utilizza la seguente sintassi SQL che aiuta a creare la nuova tabella nel database:

sorriso più bello
 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) ); 

La seguente istruzione CREATE crea il file Facoltà_Info tabella nel Mechanical_College Banca dati:

 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 ); 

Passaggio 3: inserire i dati nella tabella

Le seguenti query INSERT inseriscono i record delle Facoltà nella tabella Faculty_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); 

Passaggio 4: Visualizza i dati inseriti

La seguente istruzione SELECT visualizza i dati della tabella Faculty_Info:

 SELECT * FROM Faculty_Info; 

Facoltà_Id Nome_facoltà Facoltà_Cognome_ Facoltà_Dip_Id Facoltà_Iscrizione_Data Facoltà_Città Facoltà_Stipendio
1001 orso Sharma 4001 2020-01-02 Delhi 20000
1002 Bulbul Roy 4002 2019-12-31 Delhi 38000
1004 Saurabh Roy 4001 2020-10-10 Bombay 45000
1005 Shivani Singhania 4001 2019-07-15 Calcutta 42000
1006 Avinash Sharma 4002 2019-11-11 Delhi 28000
1007 Shyam Tu baci 4003 2021-06-21 Lucknow 35000

Passaggio 5: utilizzare l'operatore IN per visualizzare i dati della tabella Faculty_Info in diversi modi

La seguente query utilizza valori numerici con l'operatore 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); 

Questa query mostra solo il record di quelle Facoltà il cui stipendio viene passato nell'operatore IN della clausola WHERE.

Produzione:

Facoltà_Id Nome_facoltà Facoltà_Dip_Id Facoltà_Iscrizione_Data Facoltà_Stipendio
1002 Bulbul 4002 2019-12-31 38000
1004 Saurabh 4001 2020-10-10 45000
1005 Shivani 4001 2019-07-15 42000
1007 Shyam 4003 2021-06-21 35000

La seguente query utilizza valori di testo o caratteri con l'operatore logico IN:

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

Questa query mostra solo il record di quelle Facoltà la cui città è inclusa nella parentesi dell'operatore IN nella clausola WHERE.

Produzione:

Facoltà_Id Nome_facoltà Facoltà_Iscrizione_Data Facoltà_Città
1004 Saurabh 2020-10-10 Bombay
1005 Shivani 2019-07-15 Calcutta
1007 Shyam 2021-06-21 Lucknow

La seguente query utilizza il formato DATE con l'operatore logico 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); 

Questa query mostra solo i record delle Facoltà la cui data di adesione è passata nell'operatore IN della clausola WHERE.

Produzione:

Facoltà_Id Nome_facoltà Facoltà_Dip_Id Facoltà_Iscrizione_Data Facoltà_Stipendio
1001 orso 4001 2020-01-02 20000
1004 Saurabh 4001 2020-10-10 45000
1005 Shivani 4001 2019-07-15 42000
1007 Shyam 4003 2021-06-21 35000

La seguente query utilizza il comando SQL UPDATE con l'operatore logico IN:

 UPDATE Faculty_Info SET Faculty_Salary = 50000 WHERE Faculty_Dept_ID IN (4002, 4003); 

Questa query aggiorna lo stipendio di quelle Facoltà il cui Dept_Id è passato nell'operatore IN della clausola WHERE.

Per verificare il risultato della query precedente, digitare la seguente query SELECT in SQL:

 SELECT * FROM Faculty_Info; 
Facoltà_Id Nome_facoltà Facoltà_Cognome_ Facoltà_Dip_Id Facoltà_Iscrizione_Data Facoltà_Città Facoltà_Stipendio
1001 orso Sharma 4001 2020-01-02 Delhi 20000
1002 Bulbul Roy 4002 2019-12-31 Delhi 50000
1004 Saurabh Roy 4001 2020-10-10 Bombay 45000
1005 Shivani Singhania 4001 2019-07-15 Calcutta 42000
1006 Avinash Sharma 4002 2019-11-11 Delhi 50000
1007 Shyam Tu baci 4003 2021-06-21 Lucknow 50000

Operatore SQL IN con sottoquery

Nello Structured Query Language possiamo anche utilizzare la subquery con l'operatore logico IN.

La sintassi dell'operatore IN con sottoquery è riportata di seguito:

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

Se vuoi comprendere l'operatore IN con la sottoquery, devi creare le due diverse tabelle nello Structured Query Language utilizzando l'istruzione CREATE.

La seguente query crea la tabella Faculty_Info nel database:

 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 ); 

La query seguente crea il file Dipartimento_Info tabella nel database:

 CREATE TABLE Department_Info ( Dept_Id INT NOT NULL, Dept_Name Varchar(100), Head_Id INT ); 

Le seguenti query INSERT inseriscono i record delle Facoltà nella tabella Faculty_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); 

Le seguenti query INSERT inseriscono i record dei dipartimenti nella tabella 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); 

La seguente istruzione SELECT visualizza i dati della tabella Faculty_Info:

 SELECT * FROM Faculty_Info; 

Facoltà_Id Nome_facoltà Facoltà_Cognome_ Facoltà_Dip_Id Indirizzo_facoltà Facoltà_Città Facoltà_Stipendio
1001 orso Sharma 4001 Via 22 Nuova Delhi 20000
1002 Bulbul Roy 4002 Via 120 Nuova Delhi 38000
1004 Saurabh Roy 4001 Via 221 Bombay 45000
1005 Shivani Singhania 4001 Via 501 Calcutta 42000
1006 Avinash Sharma 4002 12 Via Delhi 28000
1007 Shyam Tu baci 4003 Via 202 Lucknow 35000

La seguente query mostra i record del dipartimento dalla tabella Department_Info:

 SELECT * FROM Department_Info; 
Come utilizzare IN in SQL

La seguente query utilizza l'operatore IN con una sottoquery:

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

Questa query visualizza il record di quelle Facoltà il cui Dept_ID della tabella Faculty_Info corrisponde al Dept_Id della tabella Department_Info.

Produzione:

Facoltà_Id Nome_facoltà Facoltà_Cognome_ Facoltà_Dip_Id Indirizzo_facoltà Facoltà_Città Facoltà_Stipendio
1002 Bulbul Roy 4002 Via 120 Nuova Delhi 38000
1006 Avinash Sharma 4002 12 Via Delhi 28000
1007 Shyam Tu baci 4003 Via 202 Lucknow 35000

Cosa NON c'è in SQL?

NOT IN è un altro operatore nello Structured Query Language, che è esattamente opposto all'operatore SQL IN. Ti consente di accedere a quei valori dalla tabella, che non passano tra le parentesi dell'operatore IN.

L'operatore NOT IN può essere utilizzato nelle query SQL INSERT, UPDATE, SELECT e DELETE.

Sintassi dell'operatore 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 vuoi utilizzare l'operatore NOT IN nelle istruzioni SQL, devi seguire i passaggi indicati nella stessa sequenza:

  1. Creare un database nel sistema SQL.
  2. Creare la nuova tabella nel database.
  3. Inserisci i dati nella tabella
  4. Visualizza i dati inseriti
  5. Utilizzare l'operatore NOT IN per visualizzare i dati.

Ora spiegheremo brevemente ogni passaggio uno per uno con il miglior esempio SQL:

Passaggio 1: creare il nuovo database Simple

La query seguente crea il nuovo Civile_Industria Database nel server SQL:

 CREATE Database Industry; 

Passaggio 2: crea la nuova tabella

La query seguente crea il file Informazioni_lavoratore tabella nel Civile_Industria Banca dati:

 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 ); 

Passaggio 3: inserire i valori

Le seguenti query INSERT inseriscono i record dei lavoratori nella tabella 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); 

Passaggio 4: Visualizza i dati della tabella

La query seguente visualizza i dati della tabella Worker_Info.

 SELECT * FROM Worker_Info; 

ID_lavoratore Nome_lavoratore Lavoratore_Sesso Lavoratore_Età Indirizzo_lavoratore Lavoratore_Stipendio
1001 orso Maschio 18 Agra 35000
1002 Bulbul Femmina 18 Lucknow 42000
1004 Saurabh Maschio venti Lucknow 45000
1005 Shivani Femmina 18 Agra 28000
1006 Avinash Maschio 22 Delhi 38000
1007 Shyam Maschio 18 Bangalore 20000

Passaggio 4: utilizzare l'operatore NOT IN

La seguente query utilizza l'operatore NOT IN con dati numerici:

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

Questa query SELECT mostra nell'output tutti i lavoratori il cui stipendio non viene passato nell'operatore NOT IN.

Il risultato della precedente affermazione è mostrato nella seguente tabella:

ID_lavoratore Nome_lavoratore Lavoratore_Sesso Lavoratore_Età Indirizzo_lavoratore Lavoratore_Stipendio
1002 Bulbul Femmina 18 Lucknow 42000
1004 Saurabh Maschio venti Lucknow 45000
1007 Shyam Maschio 18 Bangalore 20000

La seguente query utilizza l'operatore logico NOT IN con valori di carattere o testo:

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

Questa query mostra il record di tutti quei Lavoratori il cui indirizzo non è passato nell'operatore NOT IN.

Produzione:

ID_lavoratore Nome_lavoratore Lavoratore_Sesso Lavoratore_Età Indirizzo_lavoratore Lavoratore_Stipendio
1001 orso Maschio 18 Agra 35000
1005 Shivani Femmina 18 Agra 28000
1007 Shyam Maschio 18 Bangalore 20000