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ů:
- Vytvořte databázi v SQL.
- Vytvořte novou tabulku SQL.
- Vložte data do tabulky.
- Zobrazit vložená data.
- 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;
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í:
- Vytvořte databázi v systému SQL.
- Vytvořte novou tabulku v databázi.
- Vložte data do tabulky
- Zobrazit vložená data
- 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 |