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:
- Utwórz bazę danych w SQL.
- Utwórz nową tabelę SQL.
- Wstaw dane do tabeli.
- Wyświetl wstawione dane.
- 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;
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:
- Utwórz bazę danych w systemie SQL.
- Utwórz nową tabelę w bazie danych.
- Wstaw dane do tabeli
- Wyświetl wstawione dane
- 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 |