logo

Ako používať IN v SQL

V tomto článku SQL sa dozviete, ako používať kľúčové slovo IN v dotazoch databázy SQL.

Čo je kľúčové slovo IN v SQL?

The IN je logický operátor v Structured Query Language, ktorý umožňuje užívateľom databázy definovať viac ako jednu hodnotu v klauzule WHERE.

Klauzula WHERE s operátorom IN zobrazuje tie záznamy vo výsledku, ktoré sa zhodujú s danou množinou hodnôt. Poddotaz môžeme zadať aj v zátvorke operátora IN.

Operátor IN môžeme použiť pri dopytoch INSERT, SELECT, UPDATE a DELETE v SQL databáze.

Operátor IN v SQL nahrádza proces viacerých podmienok OR v dotazoch.

Syntax operátora 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); 

Ak chcete použiť operátor IN v príkazoch SQL, musíte postupovať podľa krokov uvedených nižšie v rovnakom poradí:

  1. Vytvorte databázu v SQL.
  2. Vytvorte novú tabuľku SQL.
  3. Vložte údaje do tabuľky.
  4. Pozrite si vložené údaje.
  5. Na zobrazenie údajov tabuľky použite operátor SQL IN.

Teraz v krátkosti vysvetlíme každý krok jeden po druhom s najlepším príkladom SQL:

Krok 1: Vytvorte jednoduchú novú databázu

Prvým krokom je vytvorenie novej databázy v Structured Query Language.

pre slučku java

Nasledujúci príkaz CREATE vytvorí nový Mechanical_College Databáza na SQL serveri:

 CREATE Database Mechanical_College; 

Krok 2: Vytvorte novú tabuľku

Teraz použite nasledujúcu syntax SQL, ktorá pomáha pri vytváraní novej tabuľky v databáze:

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

Nasledujúci príkaz CREATE vytvorí Informácie o fakulte stôl v Mechanical_College Databáza:

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

Krok 3: Vložte údaje do tabuľky

Nasledujúce INSERT dotazy vkladajú záznamy fakúlt do tabuľky 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); 

Krok 4: Zobrazte vložené údaje

Nasledujúci príkaz SELECT zobrazuje údaje tabuľky Faculty_Info:

 SELECT * FROM Faculty_Info; 

Fakulta_Id Fakulta_First_Name Fakulta_Priezvisko Faculty_Dept_Id Fakulta_Dátum pripojenia Fakulta_Mesto Fakultný_Plat
1001 medveď Sharma 4001 2020-01-02 Dillí 20 000
1002 Bulbul Roy 4002 2019-12-31 Dillí 38 000
1004 Saurabh Roy 4001 2020-10-10 Bombaj 45 000
1005 Shivani Singhania 4001 2019-07-15 Kalkata 42 000
1006 Avinash Sharma 4002 2019-11-11 Dillí 28 000
1007 Shyam Bozkávaš 4003 2021-06-21 Lucknow 35 000

Krok 5: Použite operátor IN na zobrazenie údajov tabuľky Faculty_Info rôznymi spôsobmi

Nasledujúci dotaz používa číselné hodnoty s operátorom 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); 

Tento dotaz zobrazí len záznam tých fakúlt, ktorých plat je odovzdaný v operátorovi IN klauzuly WHERE.

Výkon:

Fakulta_Id Fakulta_First_Name Faculty_Dept_Id Fakulta_Dátum pripojenia Fakultný_Plat
1002 Bulbul 4002 2019-12-31 38 000
1004 Saurabh 4001 2020-10-10 45 000
1005 Shivani 4001 2019-07-15 42 000
1007 Shyam 4003 2021-06-21 35 000

Nasledujúci dotaz používa textové alebo znakové hodnoty s logickým operátorom IN:

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

Tento dotaz zobrazuje len záznamy tých fakúlt, ktorých mesto je v zátvorke operátora IN v klauzule WHERE.

Výkon:

Fakulta_Id Fakulta_First_Name Fakulta_Dátum pripojenia Fakulta_Mesto
1004 Saurabh 2020-10-10 Bombaj
1005 Shivani 2019-07-15 Kalkata
1007 Shyam 2021-06-21 Lucknow

Nasledujúci dotaz používa formát DATE s logickým operátorom IN:

prepojený zoznam java
 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); 

Tento dotaz zobrazuje len tie záznamy fakúlt, ktorých dátum pripojenia je zadaný v operátore IN klauzuly WHERE.

Výkon:

Fakulta_Id Fakulta_First_Name Faculty_Dept_Id Fakulta_Dátum pripojenia Fakultný_Plat
1001 medveď 4001 2020-01-02 20 000
1004 Saurabh 4001 2020-10-10 45 000
1005 Shivani 4001 2019-07-15 42 000
1007 Shyam 4003 2021-06-21 35 000

Nasledujúci dotaz používa príkaz SQL UPDATE s logickým operátorom IN:

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

Tento dotaz aktualizuje plat tých fakúlt, ktorých Dept_Id je odovzdané operátorovi IN klauzuly WHERE.

Ak chcete skontrolovať výsledok vyššie uvedeného dotazu, zadajte nasledujúci dotaz SELECT v SQL:

 SELECT * FROM Faculty_Info; 
Fakulta_Id Fakulta_First_Name Fakulta_Priezvisko Faculty_Dept_Id Fakulta_Dátum pripojenia Fakulta_Mesto Fakultný_Plat
1001 medveď Sharma 4001 2020-01-02 Dillí 20 000
1002 Bulbul Roy 4002 2019-12-31 Dillí 50 000
1004 Saurabh Roy 4001 2020-10-10 Bombaj 45 000
1005 Shivani Singhania 4001 2019-07-15 Kalkata 42 000
1006 Avinash Sharma 4002 2019-11-11 Dillí 50 000
1007 Shyam Bozkávaš 4003 2021-06-21 Lucknow 50 000

SQL IN operátor s poddotazom

V Structured Query Language môžeme použiť aj poddotaz s logickým operátorom IN.

Syntax operátora IN s poddotazom je uvedená nižšie:

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

Ak chcete pochopiť operátor IN s poddotazom, musíte vytvoriť dve rôzne tabuľky v štruktúrovanom jazyku dotazov pomocou príkazu CREATE.

Nasledujúci dotaz vytvorí tabuľku Faculty_Info v databáze:

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

Nasledujúci dotaz vytvorí Department_Info tabuľka v databáze:

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

Nasledujúce INSERT dotazy vkladajú záznamy fakúlt do tabuľky 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); 

Nasledujúce INSERT dotazy vkladajú záznamy oddelení do tabuľky 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); 

Nasledujúci príkaz SELECT zobrazuje údaje tabuľky Faculty_Info:

css zarovnanie textu
 SELECT * FROM Faculty_Info; 

Fakulta_Id Fakulta_First_Name Fakulta_Priezvisko Faculty_Dept_Id Fakulta_Adresa Fakulta_Mesto Fakultný_Plat
1001 medveď Sharma 4001 Ulica 22 Nové Dillí 20 000
1002 Bulbul Roy 4002 Ulica 120 Nové Dillí 38 000
1004 Saurabh Roy 4001 Ulica 221 Bombaj 45 000
1005 Shivani Singhania 4001 Ulica 501 Kalkata 42 000
1006 Avinash Sharma 4002 Ulica 12 Dillí 28 000
1007 Shyam Bozkávaš 4003 Ulica 202 Lucknow 35 000

Nasledujúci dotaz zobrazuje záznamy oddelenia z tabuľky Department_Info:

 SELECT * FROM Department_Info; 
Ako používať IN v SQL

Nasledujúci dotaz používa operátor IN s poddotazom:

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

Tento dotaz zobrazí záznam tých fakúlt, ktorých Dept_ID tabuľky Faculty_Info sa zhoduje s Dept_Id tabuľky Department_Info.

Výkon:

Fakulta_Id Fakulta_First_Name Fakulta_Priezvisko Faculty_Dept_Id Fakulta_Adresa Fakulta_Mesto Fakultný_Plat
1002 Bulbul Roy 4002 Ulica 120 Nové Dillí 38 000
1006 Avinash Sharma 4002 Ulica 12 Dillí 28 000
1007 Shyam Bozkávaš 4003 Ulica 202 Lucknow 35 000

Čo NIE JE IN v SQL?

NOT IN je ďalší operátor v Structured Query Language, ktorý je presne opačný ako operátor SQL IN. Umožňuje prístup k tým hodnotám z tabuľky, ktorá neprechádza v zátvorkách operátora IN.

Operátor NOT IN je možné použiť v SQL dotazoch INSERT, UPDATE, SELECT a DELETE.

Syntax operátora NOT IN:

premenovanie adresára v linuxe
 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); 

Ak chcete v príkazoch SQL použiť operátor NOT IN, musíte postupovať podľa uvedených krokov v rovnakom poradí:

  1. Vytvorte databázu v systéme SQL.
  2. Vytvorte novú tabuľku v databáze.
  3. Vložte údaje do tabuľky
  4. Pozrite si vložené údaje
  5. Na zobrazenie údajov použite operátor NOT IN.

Teraz v krátkosti vysvetlíme každý krok jeden po druhom s najlepším príkladom SQL:

Krok 1: Vytvorte jednoduchú novú databázu

Nasledujúci dotaz vytvorí nový Civil_Industry Databáza na SQL serveri:

 CREATE Database Industry; 

Krok 2: Vytvorte novú tabuľku

Nasledujúci dotaz vytvorí Worker_Info stôl v Civil_Industry Databáza:

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

Krok 3: Vložte hodnoty

Nasledujúce INSERT dotazy vkladajú záznamy pracovníkov do tabuľky 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); 

Krok 4: Zobrazte údaje tabuľky

Nasledujúci dotaz zobrazí údaje tabuľky Worker_Info.

sql poradie podľa dátumu
 SELECT * FROM Worker_Info; 

Worker_ID Worker_Name Worker_Gender Worker_Vek Worker_Address Pracovník_plat
1001 medveď Muž 18 Agra 35 000
1002 Bulbul Žena 18 Lucknow 42 000
1004 Saurabh Muž dvadsať Lucknow 45 000
1005 Shivani Žena 18 Agra 28 000
1006 Avinash Muž 22 Dillí 38 000
1007 Shyam Muž 18 Bangalore 20 000

Krok 4: Použite operátor NOT IN

Nasledujúci dotaz používa operátor NOT IN s číselnými údajmi:

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

Tento dotaz SELECT zobrazuje všetkých pracovníkov vo výstupe, ktorých plat neprešiel operátorom NOT IN.

Výsledok vyššie uvedeného tvrdenia je uvedený v nasledujúcej tabuľke:

Worker_ID Worker_Name Worker_Gender Worker_Vek Worker_Address Pracovník_plat
1002 Bulbul Žena 18 Lucknow 42 000
1004 Saurabh Muž dvadsať Lucknow 45 000
1007 Shyam Muž 18 Bangalore 20 000

Nasledujúci dotaz používa logický operátor NOT IN so znakovými alebo textovými hodnotami:

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

Tento dotaz zobrazuje záznam všetkých pracovníkov, ktorých adresa nie je odovzdaná operátorom NOT IN.

Výkon:

Worker_ID Worker_Name Worker_Gender Worker_Vek Worker_Address Pracovník_plat
1001 medveď Muž 18 Agra 35 000
1005 Shivani Žena 18 Agra 28 000
1007 Shyam Muž 18 Bangalore 20 000