logo

Kaip naudoti IN SQL

Šiame SQL straipsnyje sužinosite, kaip SQL duomenų bazės užklausose naudoti raktinį žodį IN.

Kas yra IN raktinis žodis SQL?

The IN yra loginis operatorius Struktūrinės užklausos kalboje, leidžiantis duomenų bazės vartotojams apibrėžti daugiau nei vieną reikšmę WHERE sąlygoje.

mašinraščio foreach

WHERE sąlyga su IN operatoriumi parodo tuos rezultato įrašus, kurie atitinka nurodytą reikšmių rinkinį. Taip pat galime nurodyti antrinę užklausą IN operatoriaus skliausteliuose.

Operatorių IN galime naudoti su INSERT, SELECT, UPDATE ir DELETE užklausomis SQL duomenų bazėje.

IN operatorius SQL pakeičia kelių ARBA sąlygų užklausose procesą.

IN operatoriaus sintaksė:

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

Jei SQL sakiniuose norite naudoti operatorių IN, turite atlikti toliau nurodytus veiksmus ta pačia seka:

  1. Sukurkite duomenų bazę SQL.
  2. Sukurkite naują SQL lentelę.
  3. Įveskite duomenis į lentelę.
  4. Peržiūrėkite įterptus duomenis.
  5. Lentelės duomenims rodyti naudokite SQL IN operatorių.

Dabar mes trumpai paaiškinsime kiekvieną veiksmą po vieną su geriausiu SQL pavyzdžiu:

1 veiksmas: sukurkite paprastą naują duomenų bazę

Pirmas žingsnis yra sukurti naują duomenų bazę struktūrinės užklausos kalba.

Šis CREATE sakinys sukuria naują Mechaninė_Kolegija Duomenų bazė SQL serveryje:

 CREATE Database Mechanical_College; 

2 veiksmas: sukurkite naują lentelę

Dabar naudokite šią SQL sintaksę, kuri padeda sukurti naują lentelę duomenų bazėje:

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

Šis CREATE sakinys sukuria Fakulteto_informacija lentelėje Mechaninė_Kolegija Duomenų bazė:

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

3 veiksmas: įdėkite duomenis į lentelę

Šios INSERT užklausos įterpia fakultetų įrašus į Faculty_Info lentelę:

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

4 veiksmas: peržiūrėkite įterptus duomenis

Šiame SELECT sakinyje pateikiami Faculty_Info lentelės duomenys:

 SELECT * FROM Faculty_Info; 

Fakulteto_ID Fakulteto_Vardas Fakulteto_Pavardė Fakulteto_katedros_ID Fakultetas_Prisijungimo_data Fakultetas_Miestas Fakultetas_Atlyginimas
1001 turėti Šarma 4001 2020-01-02 Delis 20 000
1002 Bulbul Rojus 4002 2019-12-31 Delis 38 000
1004 Saurabh Rojus 4001 2020-10-10 Mumbajus 45 000
1005 m Šivani Singhania 4001 2019-07-15 Kolkata 42 000
1006 Avinash Šarma 4002 2019-11-11 Delis 28 000
1007 Shyam Bučiuok 4003 2021-06-21 Laknau 35 000

5 veiksmas: naudokite IN operatorių, norėdami įvairiais būdais peržiūrėti Faculty_Info lentelės duomenis

Šioje užklausoje naudojamos skaitinės reikšmės su IN operatoriumi:

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

Šioje užklausoje rodomas tik tų fakultetų įrašas, kurių atlyginimas perduotas IN operatoriuje WHERE.

Išvestis:

Fakulteto_ID Fakulteto_Vardas Fakulteto_katedros_ID Fakultetas_Prisijungimo_data Fakultetas_Atlyginimas
1002 Bulbul 4002 2019-12-31 38 000
1004 Saurabh 4001 2020-10-10 45 000
1005 m Šivani 4001 2019-07-15 42 000
1007 Shyam 4003 2021-06-21 35 000

Šioje užklausoje naudojamos teksto arba simbolių reikšmės su IN loginiu operatoriumi:

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

Šioje užklausoje rodomas tik tų fakultetų įrašas, kurių miestas yra įtrauktas į IN operatoriaus skliaustelį WHERE sakinyje.

Išvestis:

Fakulteto_ID Fakulteto_Vardas Fakultetas_Prisijungimo_data Fakultetas_Miestas
1004 Saurabh 2020-10-10 Mumbajus
1005 m Šivani 2019-07-15 Kolkata
1007 Shyam 2021-06-21 Laknau

Šioje užklausoje naudojamas DATE formatas su IN loginiu operatoriumi:

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

Ši užklausa rodo tik tuos fakultetų įrašus, kurių įstojimo data yra perduota WHERE sakinio IN operatoriuje.

Išvestis:

Fakulteto_ID Fakulteto_Vardas Fakulteto_katedros_ID Fakultetas_Prisijungimo_data Fakultetas_Atlyginimas
1001 turėti 4001 2020-01-02 20 000
1004 Saurabh 4001 2020-10-10 45 000
1005 m Šivani 4001 2019-07-15 42 000
1007 Shyam 4003 2021-06-21 35 000

Ši užklausa naudoja SQL UPDATE komandą su IN loginiu operatoriumi:

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

Ši užklausa atnaujina atlyginimą tų fakultetų, kurių Dept_Id yra perduotas WHERE sąlygos IN operatoriuje.

Norėdami patikrinti aukščiau pateiktos užklausos rezultatą, įveskite šią SELECT užklausą SQL:

 SELECT * FROM Faculty_Info; 
Fakulteto_ID Fakulteto_Vardas Fakulteto_Pavardė Fakulteto_katedros_ID Fakultetas_Prisijungimo_data Fakultetas_Miestas Fakultetas_Atlyginimas
1001 turėti Šarma 4001 2020-01-02 Delis 20 000
1002 Bulbul Rojus 4002 2019-12-31 Delis 50 000
1004 Saurabh Rojus 4001 2020-10-10 Mumbajus 45 000
1005 m Šivani Singhania 4001 2019-07-15 Kolkata 42 000
1006 Avinash Šarma 4002 2019-11-11 Delis 50 000
1007 Shyam Bučiuok 4003 2021-06-21 Laknau 50 000

SQL IN operatorius su papildoma užklausa

Struktūrinės užklausos kalboje taip pat galime naudoti antrinę užklausą su IN loginiu operatoriumi.

IN operatoriaus sintaksė su antrine užklausa pateikta toliau:

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

Jei norite suprasti IN operatorių su antrine užklausa, turite sukurti dvi skirtingas lenteles Struktūrinės užklausos kalboje naudodami CREATE sakinį.

Šia užklausa duomenų bazėje sukuriama lentelė Faculty_Info:

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

Ši užklausa sukuria Skyriaus_informacija Lentelė duomenų bazėje:

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

Šios INSERT užklausos įterpia fakultetų įrašus į Faculty_Info lentelę:

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

Šios INSERT užklausos įterpia skyrių įrašus į Skyriaus_informacijos lentelę:

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

Šiame SELECT sakinyje pateikiami Faculty_Info lentelės duomenys:

 SELECT * FROM Faculty_Info; 

Fakulteto_ID Fakulteto_Vardas Fakulteto_Pavardė Fakulteto_katedros_ID Fakulteto_adresas Fakultetas_Miestas Fakultetas_Atlyginimas
1001 turėti Šarma 4001 22 gatvė Naujasis Delis 20 000
1002 Bulbul Rojus 4002 120 gatvė Naujasis Delis 38 000
1004 Saurabh Rojus 4001 221 gatvė Mumbajus 45 000
1005 m Šivani Singhania 4001 501 gatvė Kolkata 42 000
1006 Avinash Šarma 4002 12 gatvė Delis 28 000
1007 Shyam Bučiuok 4003 202 gatvė Laknau 35 000

Ši užklausa rodo skyriaus įrašus iš Departamento_informacijos lentelės:

 SELECT * FROM Department_Info; 
Kaip naudoti IN SQL

Šioje užklausoje naudojamas IN operatorius su antrine užklausa:

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

Ši užklausa rodo tų fakultetų, kurių fakulteto_informacijos lentelės Dept_ID atitinka lentelės Skyriaus_informacija Dept_ID, įrašą.

Išvestis:

Fakulteto_ID Fakulteto_Vardas Fakulteto_Pavardė Fakulteto_katedros_ID Fakulteto_adresas Fakultetas_Miestas Fakultetas_Atlyginimas
1002 Bulbul Rojus 4002 120 gatvė Naujasis Delis 38 000
1006 Avinash Šarma 4002 12 gatvė Delis 28 000
1007 Shyam Bučiuok 4003 202 gatvė Laknau 35 000

Kas NĖRA IN SQL?

NOT IN yra kitas struktūrinės užklausos kalbos operatorius, kuris yra priešingas SQL IN operatoriui. Tai leidžia pasiekti tas vertes iš lentelės, kurios nepatenka į IN operatoriaus skliausteliuose.

Operatorius NOT IN gali būti naudojamas INSERT, UPDATE, SELECT ir DELETE SQL užklausose.

Operatoriaus NOT IN sintaksė:

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

Jei SQL sakiniuose norite naudoti operatorių NOT IN, turite atlikti nurodytus veiksmus ta pačia seka:

  1. Sukurkite duomenų bazę SQL sistemoje.
  2. Sukurkite naują lentelę duomenų bazėje.
  3. Įveskite duomenis į lentelę
  4. Peržiūrėkite įterptus duomenis
  5. Duomenims peržiūrėti naudokite operatorių NOT IN.

Dabar mes trumpai paaiškinsime kiekvieną veiksmą po vieną su geriausiu SQL pavyzdžiu:

1 veiksmas: sukurkite naują paprastą duomenų bazę

Ši užklausa sukuria naują Civilinė_pramonė Duomenų bazė SQL serveryje:

 CREATE Database Industry; 

2 veiksmas: sukurkite naują lentelę

Ši užklausa sukuria Darbuotojo_informacija lentelėje Civilinė_pramonė Duomenų bazė:

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

3 veiksmas: įterpkite reikšmes

Šios INSERT užklausos įterpia darbuotojų įrašus į lentelę 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); 

4 veiksmas: peržiūrėkite lentelės duomenis

Šioje užklausoje pateikiami lentelės Worker_Info duomenys.

 SELECT * FROM Worker_Info; 

Darbuotojo_ID Darbuotojo_vardas Darbuotojo_lytis Darbuotojo_amžius Darbuotojo_adresas Darbuotojas_Atlyginimas
1001 turėti Patinas 18 Agra 35 000
1002 Bulbul Moteris 18 Laknau 42 000
1004 Saurabh Patinas dvidešimt Laknau 45 000
1005 m Šivani Moteris 18 Agra 28 000
1006 Avinash Patinas 22 Delis 38 000
1007 Shyam Patinas 18 Bengalūras 20 000

4 veiksmas: naudokite operatorių NOT IN

Šioje užklausoje naudojamas operatorius NOT IN su skaitiniais duomenimis:

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

Ši PASIRINKIMO užklausa rodo visus tuos darbuotojus išvestyje, kurių atlyginimas neperduotas operatoriuje NOT IN.

Aukščiau pateikto teiginio rezultatas parodytas šioje lentelėje:

Išbandykite duomenų struktūrą
Darbuotojo_ID Darbuotojo_vardas Darbuotojo_lytis Darbuotojo_amžius Darbuotojo_adresas Darbuotojas_Atlyginimas
1002 Bulbul Moteris 18 Laknau 42 000
1004 Saurabh Patinas dvidešimt Laknau 45 000
1007 Shyam Patinas 18 Bengalūras 20 000

Šioje užklausoje naudojamas NOT IN loginis operatorius su simbolių arba teksto reikšmėmis:

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

Ši užklausa rodo visų tų darbuotojų, kurių adresas neperduotas operatoriuje NOT IN, įrašą.

Išvestis:

Darbuotojo_ID Darbuotojo_vardas Darbuotojo_lytis Darbuotojo_amžius Darbuotojo_adresas Darbuotojas_Atlyginimas
1001 turėti Patinas 18 Agra 35 000
1005 m Šivani Moteris 18 Agra 28 000
1007 Shyam Patinas 18 Bengalūras 20 000