logo

Jak používat IN v SQL

V tomto článku SQL se dozvíte, jak používat klíčové slovo IN v dotazech databáze SQL.

Co je klíčové slovo IN v SQL?

The V je logický operátor v jazyce Structured Query Language, který umožňuje uživatelům databáze definovat více než jednu hodnotu v klauzuli WHERE.

Klauzule WHERE s operátorem IN zobrazuje ve výsledku ty záznamy, které se shodují s danou sadou hodnot. Můžeme také zadat poddotaz v závorce operátoru IN.

Operátor IN můžeme použít s dotazy INSERT, SELECT, UPDATE a DELETE v SQL databázi.

Operátor IN v SQL nahrazuje proces více podmínek OR v dotazech.

Syntaxe operátoru 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); 

Pokud chcete v příkazech SQL použít operátor IN, musíte ve stejném pořadí postupovat podle níže uvedených kroků:

  1. Vytvořte databázi v SQL.
  2. Vytvořte novou tabulku SQL.
  3. Vložte data do tabulky.
  4. Zobrazit vložená data.
  5. K zobrazení dat tabulky použijte operátor SQL IN.

Nyní vysvětlíme každý krok jeden po druhém stručně s nejlepším příkladem SQL:

Krok 1: Vytvořte jednoduchou novou databázi

Prvním krokem je vytvoření nové databáze ve Structured Query Language.

Následující příkaz CREATE vytvoří nový Mechanical_College Databáze na SQL serveru:

 CREATE Database Mechanical_College; 

Krok 2: Vytvořte novou tabulku

Nyní použijte následující syntaxi SQL, která pomáhá při vytváření nové tabulky v databázi:

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

Následující příkaz CREATE vytvoří Informace o fakultě stůl v Mechanical_College Databáze:

linuxový soubor změny
 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 data do tabulky

Následující INSERT dotazy vkládají záznamy fakult do tabulky Informace o fakultě:

 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á data

Následující příkaz SELECT zobrazí data tabulky Faculty_Info:

 SELECT * FROM Faculty_Info; 

Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Příjmení Fakulta_Id_odd Fakulta_Datum_připojení Fakulta_město Fakultní_Plat
1001 medvěd Sharma 4001 2020-01-02 Dillí 20 000
1002 Bulbul Royi 4002 2019-12-31 Dillí 38 000
1004 Saurabh Royi 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 Líbáš 4003 2021-06-21 Lucknow 35 000

Krok 5: Použijte operátor IN k zobrazení dat tabulky Faculty_Info různými způsoby

Následující dotaz používá číselné hodnoty s operátorem 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 zobrazuje pouze záznamy těch fakult, jejichž plat je předán v operátoru IN klauzule WHERE.

Výstup:

Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Id_odd Fakulta_Datum_připojení 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

Následující dotaz používá textové nebo znakové hodnoty s logickým operátorem 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 pouze záznamy těch fakult, jejichž město je uvedeno v závorce operátoru IN v klauzuli WHERE.

Výstup:

Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Datum_připojení Fakulta_město
1004 Saurabh 2020-10-10 Bombaj
1005 Shivani 2019-07-15 Kalkata
1007 Shyam 2021-06-21 Lucknow

Následující dotaz používá formát DATE s logickým operátorem 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); 

Tento dotaz zobrazuje pouze ty záznamy fakult, jejichž datum připojení je předáno operátorem IN klauzule WHERE.

Výstup:

Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Id_odd Fakulta_Datum_připojení Fakultní_Plat
1001 medvěd 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

Následující dotaz používá příkaz SQL UPDATE s logickým operátorem IN:

sloučit řazení java
 UPDATE Faculty_Info SET Faculty_Salary = 50000 WHERE Faculty_Dept_ID IN (4002, 4003); 

Tento dotaz aktualizuje plat těch fakult, jejichž Dept_Id je předáno operátorem IN klauzule WHERE.

Chcete-li zkontrolovat výsledek výše uvedeného dotazu, zadejte v SQL následující dotaz SELECT:

 SELECT * FROM Faculty_Info; 
Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Příjmení Fakulta_Id_odd Fakulta_Datum_připojení Fakulta_město Fakultní_Plat
1001 medvěd Sharma 4001 2020-01-02 Dillí 20 000
1002 Bulbul Royi 4002 2019-12-31 Dillí 50 000
1004 Saurabh Royi 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 Líbáš 4003 2021-06-21 Lucknow 50 000

SQL IN operátor s poddotazem

Ve Structured Query Language můžeme použít i poddotaz s logickým operátorem IN.

Syntaxe operátoru IN s poddotazem je uvedena níže:

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

Pokud chcete porozumět operátoru IN s poddotazem, musíte vytvořit dvě různé tabulky ve strukturovaném dotazovacím jazyce pomocí příkazu CREATE.

Následující dotaz vytvoří tabulku Faculty_Info v databázi:

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

Následující dotaz vytvoří Informace o oddělení tabulka v databázi:

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

Následující INSERT dotazy vkládají záznamy fakult do tabulky Informace o fakultě:

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

Následující INSERT dotazy vkládají záznamy oddělení do tabulky 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); 

Následující příkaz SELECT zobrazí data tabulky Faculty_Info:

 SELECT * FROM Faculty_Info; 

Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Příjmení Fakulta_Id_odd Adresa_fakulty Fakulta_město Fakultní_Plat
1001 medvěd Sharma 4001 Ulice 22 Nové Dillí 20 000
1002 Bulbul Royi 4002 Ulice 120 Nové Dillí 38 000
1004 Saurabh Royi 4001 Ulice 221 Bombaj 45 000
1005 Shivani Singhania 4001 Ulice 501 Kalkata 42 000
1006 Avinash Sharma 4002 Ulice 12 Dillí 28 000
1007 Shyam Líbáš 4003 Ulice 202 Lucknow 35 000

Následující dotaz zobrazuje záznamy oddělení z tabulky Department_Info:

 SELECT * FROM Department_Info; 
Jak používat IN v SQL

Následující dotaz používá operátor IN s poddotazem:

 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 fakult, jejichž tabulka Dept_ID of Faculty_Info se shoduje s tabulkou Dept_Id of Department_Info.

Výstup:

Fakulta_Id Fakulta_Jméno_Jméno Fakulta_Příjmení Fakulta_Id_odd Adresa_fakulty Fakulta_město Fakultní_Plat
1002 Bulbul Royi 4002 Ulice 120 Nové Dillí 38 000
1006 Avinash Sharma 4002 Ulice 12 Dillí 28 000
1007 Shyam Líbáš 4003 Ulice 202 Lucknow 35 000

Co NENÍ IN v SQL?

NOT IN je další operátor v jazyce Structured Query Language, který je pravým opakem operátoru SQL IN. Umožňuje přístup k těm hodnotám z tabulky, která neprochází v závorce operátor IN.

Operátor NOT IN lze použít v dotazech SQL INSERT, UPDATE, SELECT a DELETE.

Syntaxe operátoru 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); 

Pokud chcete v příkazech SQL použít operátor NOT IN, musíte postupovat podle uvedených kroků ve stejném pořadí:

  1. Vytvořte databázi v systému SQL.
  2. Vytvořte novou tabulku v databázi.
  3. Vložte data do tabulky
  4. Zobrazit vložená data
  5. K zobrazení dat použijte operátor NOT IN.

Nyní vysvětlíme každý krok jeden po druhém stručně s nejlepším příkladem SQL:

Krok 1: Vytvořte jednoduchou novou databázi

Následující dotaz vytvoří nový Civil_Industry Databáze na SQL serveru:

markdown obrázky
 CREATE Database Industry; 

Krok 2: Vytvořte novou tabulku

Následující dotaz vytvoří Worker_Info stůl v Civil_Industry Databáze:

 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

Následující dotazy INSERT vkládají záznamy pracovníků do tabulky 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: Prohlédněte si data tabulky

Následující dotaz zobrazí data tabulky Worker_Info.

 SELECT * FROM Worker_Info; 

Worker_ID Pracovní_Jméno Worker_Gender Worker_Age Worker_Address Pracovní_plat
1001 medvěd mužský 18 Agra 35 000
1002 Bulbul ženský 18 Lucknow 42 000
1004 Saurabh mužský dvacet Lucknow 45 000
1005 Shivani ženský 18 Agra 28 000
1006 Avinash mužský 22 Dillí 38 000
1007 Shyam mužský 18 Bangalore 20 000

Krok 4: Použijte operátor NOT IN

Následující dotaz používá operátor NOT IN s číselnými údaji:

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

Tento dotaz SELECT zobrazuje všechny pracovníky ve výstupu, jejichž plat není předán operátorem NOT IN.

Výsledek výše uvedeného tvrzení je uveden v následující tabulce:

Worker_ID Pracovní_Jméno Worker_Gender Worker_Age Worker_Address Pracovní_plat
1002 Bulbul ženský 18 Lucknow 42 000
1004 Saurabh mužský dvacet Lucknow 45 000
1007 Shyam mužský 18 Bangalore 20 000

Následující dotaz používá logický operátor NOT IN se znakovými nebo textovými hodnotami:

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

Tento dotaz zobrazuje záznamy všech pracovníků, jejichž adresa není předána operátorem NOT IN.

Výstup:

Worker_ID Pracovní_Jméno Worker_Gender Worker_Age Worker_Address Pracovní_plat
1001 medvěd mužský 18 Agra 35 000
1005 Shivani ženský 18 Agra 28 000
1007 Shyam mužský 18 Bangalore 20 000