logo

Jak używać IN w SQL

W tym artykule SQL dowiesz się jak używać słowa kluczowego IN w zapytaniach do bazy danych SQL.

Co to jest słowo kluczowe IN w SQL?

The W to operator logiczny w Structured Query Language, który pozwala użytkownikom bazy danych zdefiniować więcej niż jedną wartość w klauzuli WHERE.

Klauzula WHERE z operatorem IN pokazuje w wyniku te rekordy, które odpowiadają podanemu zbiorowi wartości. Podzapytanie możemy podać także w nawiasie operatora IN.

Operatora IN możemy używać z zapytaniami INSERT, SELECT, UPDATE i DELETE w bazie danych SQL.

polecenia Linuksa

Operator IN w SQL zastępuje proces wielu warunków OR w zapytaniach.

Składnia operatora 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); 

Jeśli chcesz użyć operatora IN w instrukcjach SQL, musisz wykonać poniższe kroki w tej samej kolejności:

  1. Utwórz bazę danych w SQL.
  2. Utwórz nową tabelę SQL.
  3. Wstaw dane do tabeli.
  4. Wyświetl wstawione dane.
  5. Użyj operatora SQL IN, aby wyświetlić dane tabeli.

Teraz wyjaśnimy pokrótce każdy krok na najlepszym przykładzie SQL:

Krok 1: Utwórz prostą nową bazę danych

Pierwszym krokiem jest utworzenie nowej bazy danych w Structured Query Language.

Następująca instrukcja CREATE tworzy nowy Szkoła Mechaniczna Baza danych na serwerze SQL:

 CREATE Database Mechanical_College; 

Krok 2: Utwórz nową tabelę

Teraz użyj następującej składni SQL, która pomoże w utworzeniu nowej tabeli w bazie danych:

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

Następująca instrukcja CREATE tworzy plik Informacje o wydziale stolik w Szkoła Mechaniczna Baza danych:

 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: Wstaw dane do tabeli

Następujące zapytania INSERT wstawiają rekordy wydziałów do tabeli Faculty_Info:

jak zmienić ciąg na int
 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: Wyświetl wstawione dane

Następująca instrukcja SELECT wyświetla dane z tabeli Faculty_Info:

 SELECT * FROM Faculty_Info; 

Identyfikator wydziału Imię_wydziału Wydział_Nazwisko Identyfikator wydziału_wydziału Wydział_Dołączenie_Data Wydział_Miasto Wydział_Wynagrodzenie
1001 niedźwiedź Sharma 4001 2020-01-02 Delhi 20000
1002 Bulbul Roy 4002 2019-12-31 Delhi 38000
1004 Saurabh Roy 4001 2020-10-10 Bombaj 45000
1005 Shivani Singapur 4001 15.07.2019 Kalkuta 42000
1006 Avinash Sharma 4002 2019-11-11 Delhi 28000
1007 Shyam Ty całujesz 4003 21.06.2021 Lucknow 35000

Krok 5: Użyj operatora IN, aby wyświetlić dane w tabeli Faculty_Info na różne sposoby

Poniższe zapytanie używa wartości numerycznych z operatorem 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); 

Zapytanie to pokazuje tylko rekord tych wydziałów, których wynagrodzenie jest przekazywane w operatorze IN klauzuli WHERE.

Wyjście:

Identyfikator wydziału Imię_wydziału Identyfikator wydziału_wydziału Wydział_Dołączenie_Data Wydział_Wynagrodzenie
1002 Bulbul 4002 2019-12-31 38000
1004 Saurabh 4001 2020-10-10 45000
1005 Shivani 4001 15.07.2019 42000
1007 Shyam 4003 21.06.2021 35000

W poniższym zapytaniu używane są wartości tekstowe lub znakowe z operatorem logicznym IN:

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

Zapytanie to wyświetla tylko rekord tych wydziałów, których miasto jest podane w nawiasie operatora IN w klauzuli WHERE.

Wyjście:

Identyfikator wydziału Imię_wydziału Wydział_Dołączenie_Data Wydział_Miasto
1004 Saurabh 2020-10-10 Bombaj
1005 Shivani 15.07.2019 Kalkuta
1007 Shyam 21.06.2021 Lucknow

W poniższym zapytaniu zastosowano DATEformat z operatorem logicznym 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); 

Zapytanie to wyświetla tylko te rekordy Wydziałów, których data przyłączenia jest podana w operatorze IN klauzuli WHERE.

Wyjście:

Identyfikator wydziału Imię_wydziału Identyfikator wydziału_wydziału Wydział_Dołączenie_Data Wydział_Wynagrodzenie
1001 niedźwiedź 4001 2020-01-02 20000
1004 Saurabh 4001 2020-10-10 45000
1005 Shivani 4001 15.07.2019 42000
1007 Shyam 4003 21.06.2021 35000

W poniższym zapytaniu użyto polecenia SQL UPDATE z operatorem logicznym IN:

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

To zapytanie aktualizuje wynagrodzenie tych wydziałów, których Dept_Id jest przekazany w operatorze IN klauzuli WHERE.

Aby sprawdzić wynik powyższego zapytania, wpisz w SQL następujące zapytanie SELECT:

 SELECT * FROM Faculty_Info; 
Identyfikator wydziału Imię_wydziału Wydział_Nazwisko Identyfikator wydziału_wydziału Wydział_Dołączenie_Data Wydział_Miasto Wydział_Wynagrodzenie
1001 niedźwiedź Sharma 4001 2020-01-02 Delhi 20000
1002 Bulbul Roy 4002 2019-12-31 Delhi 50000
1004 Saurabh Roy 4001 2020-10-10 Bombaj 45000
1005 Shivani Singapur 4001 15.07.2019 Kalkuta 42000
1006 Avinash Sharma 4002 2019-11-11 Delhi 50000
1007 Shyam Ty całujesz 4003 21.06.2021 Lucknow 50000

Operator SQL IN z podzapytaniem

W Structured Query Language możemy także użyć podzapytania z operatorem logicznym IN.

Poniżej podano składnię operatora IN z podzapytaniem:

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

Jeśli chcesz zrozumieć operator IN z podzapytaniem, musisz utworzyć dwie różne tabele w Strukturalnym Języku Zapytań za pomocą instrukcji CREATE.

Poniższe zapytanie tworzy tabelę Faculty_Info w bazie danych:

stopy kontra stopa
 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 ); 

Następujące zapytanie tworzy plik Informacje o dziale tabela w bazie danych:

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

Następujące zapytania INSERT wstawiają rekordy wydziałów do tabeli 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); 

Następujące zapytania INSERT wstawiają rekordy działów w tabeli 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); 

Następująca instrukcja SELECT wyświetla dane z tabeli Faculty_Info:

 SELECT * FROM Faculty_Info; 

Identyfikator wydziału Imię_wydziału Wydział_Nazwisko Identyfikator wydziału_wydziału Adres_wydziału Wydział_Miasto Wydział_Wynagrodzenie
1001 niedźwiedź Sharma 4001 Ulica 22 Nowe Delhi 20000
1002 Bulbul Roy 4002 Ulica 120 Nowe Delhi 38000
1004 Saurabh Roy 4001 Ulica 221 Bombaj 45000
1005 Shivani Singapur 4001 Ulica 501 Kalkuta 42000
1006 Avinash Sharma 4002 Ulica 12 Delhi 28000
1007 Shyam Ty całujesz 4003 Ulica 202 Lucknow 35000

Poniższe zapytanie wyświetla rekordy działu z tabeli Department_Info:

 SELECT * FROM Department_Info; 
Jak używać IN w SQL

Poniższe zapytanie używa operatora IN z podzapytaniem:

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

To zapytanie wyświetla rekord tych wydziałów, których Dept_ID z tabeli Faculty_Info jest zgodny z Dept_Id z tabeli Department_Info.

Wyjście:

Identyfikator wydziału Imię_wydziału Wydział_Nazwisko Identyfikator wydziału_wydziału Adres_wydziału Wydział_Miasto Wydział_Wynagrodzenie
1002 Bulbul Roy 4002 Ulica 120 Nowe Delhi 38000
1006 Avinash Sharma 4002 Ulica 12 Delhi 28000
1007 Shyam Ty całujesz 4003 Ulica 202 Lucknow 35000

Czego NIE ma w SQL?

NOT IN to kolejny operator w Structured Query Language, będący całkowitym przeciwieństwem operatora SQL IN. Umożliwia dostęp do tych wartości z tabeli, które nie są podawane w nawiasie operatora IN.

Operatora NOT IN można używać w zapytaniach SQL INSERT, UPDATE, SELECT i DELETE.

Składnia operatora 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); 

Jeśli chcesz użyć operatora NOT IN w instrukcjach SQL, musisz wykonać podane kroki w tej samej kolejności:

  1. Utwórz bazę danych w systemie SQL.
  2. Utwórz nową tabelę w bazie danych.
  3. Wstaw dane do tabeli
  4. Wyświetl wstawione dane
  5. Aby wyświetlić dane, użyj operatora NOT IN.

Teraz wyjaśnimy pokrótce każdy krok na najlepszym przykładzie SQL:

Krok 1: Utwórz prostą nową bazę danych

obraz przeceny

Następujące zapytanie tworzy plik new Przemysł_cywilny Baza danych na serwerze SQL:

 CREATE Database Industry; 

Krok 2: Utwórz nową tabelę

Następujące zapytanie tworzy plik Informacje o pracowniku stolik w Przemysł_cywilny Baza danych:

 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: Wstaw wartości

Następujące zapytania INSERT wstawiają rekordy pracowników do tabeli 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: Wyświetl dane tabeli

Poniższe zapytanie wyświetla dane tabeli Worker_Info.

Linux $home
 SELECT * FROM Worker_Info; 

Identyfikator pracownika Nazwa_pracownika Pracownik_płeć Pracownik_wiek Adres_pracownika Pracownik_Wynagrodzenie
1001 niedźwiedź Mężczyzna 18 Agra 35000
1002 Bulbul Kobieta 18 Lucknow 42000
1004 Saurabh Mężczyzna 20 Lucknow 45000
1005 Shivani Kobieta 18 Agra 28000
1006 Avinash Mężczyzna 22 Delhi 38000
1007 Shyam Mężczyzna 18 Bangalore 20000

Krok 4: Użyj operatora NOT IN

W poniższym zapytaniu zastosowano operator NOT IN z danymi liczbowymi:

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

To zapytanie SELECT pokazuje w wynikach wszystkich pracowników, których wynagrodzenie nie zostało przekazane operatorem NOT IN.

Wynik powyższego zestawienia przedstawiono w poniższej tabeli:

Identyfikator pracownika Nazwa_pracownika Pracownik_płeć Pracownik_wiek Adres_pracownika Pracownik_Wynagrodzenie
1002 Bulbul Kobieta 18 Lucknow 42000
1004 Saurabh Mężczyzna 20 Lucknow 45000
1007 Shyam Mężczyzna 18 Bangalore 20000

W poniższym zapytaniu zastosowano operator logiczny NOT IN z wartościami znakowymi lub tekstowymi:

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

To zapytanie pokazuje rekord wszystkich pracowników, których adresy nie zostały przekazane w operatorze NOT IN.

Wyjście:

Identyfikator pracownika Nazwa_pracownika Pracownik_płeć Pracownik_wiek Adres_pracownika Pracownik_Wynagrodzenie
1001 niedźwiedź Mężczyzna 18 Agra 35000
1005 Shivani Kobieta 18 Agra 28000
1007 Shyam Mężczyzna 18 Bangalore 20000