Š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:
- Sukurkite duomenų bazę SQL.
- Sukurkite naują SQL lentelę.
- Įveskite duomenis į lentelę.
- Peržiūrėkite įterptus duomenis.
- 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;
Š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:
- Sukurkite duomenų bazę SQL sistemoje.
- Sukurkite naują lentelę duomenų bazėje.
- Įveskite duomenis į lentelę
- Peržiūrėkite įterptus duomenis
- 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 |