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:
- Creare un database in SQL.
- Crea la nuova tabella SQL.
- Inserisci i dati nella tabella.
- Visualizza i dati inseriti.
- 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;
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:
- Creare un database nel sistema SQL.
- Creare la nuova tabella nel database.
- Inserisci i dati nella tabella
- Visualizza i dati inseriti
- 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 |