logo

Как да използвате IN в SQL

В тази SQL статия ще научите как да използвате ключова дума IN в заявките на SQL базата данни.

Какво е ключова дума IN в SQL?

The IN е логически оператор в езика за структурирани заявки, който позволява на потребителите на базата данни да дефинират повече от една стойност в клаузата WHERE.

Клаузата WHERE с оператор IN показва онези записи в резултата, които съответстват на дадения набор от стойности. Можем също да посочим подзаявката в скобите на IN оператора.

Можем да използваме оператора IN със заявките INSERT, SELECT, UPDATE и DELETE в SQL базата данни.

Операторът IN в SQL замества процеса на множество условия ИЛИ в заявките.

Синтаксис на 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); 

Ако искате да използвате оператора IN в SQL изразите, трябва да следвате стъпките, дадени по-долу в същата последователност:

  1. Създайте база данни в SQL.
  2. Създайте новата SQL таблица.
  3. Въведете данните в таблицата.
  4. Преглед на въведените данни.
  5. Използвайте оператора SQL IN, за да покажете данните на таблицата.

Сега ще обясним всяка стъпка една по една накратко с най-добрия SQL пример:

Стъпка 1: Създайте проста нова база данни

Първата стъпка е да създадете нова база данни на Structured Query Language.

Следният оператор CREATE създава новото Механичен_колеж База данни в SQL сървър:

 CREATE Database Mechanical_College; 

Стъпка 2: Създайте нова таблица

Сега използвайте следния SQL синтаксис, който помага при създаването на новата таблица в базата данни:

изявление за печат в java
 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) ); 

Следният оператор CREATE създава Факултет_Инфо маса в Механичен_колеж База данни:

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

Стъпка 3: Вмъкнете данните в таблицата

Следните заявки INSERT вмъкват записите на Факултети в таблицата 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); 

Стъпка 4: Преглед на въведените данни

Следният оператор SELECT показва данните от таблицата Faculty_Info:

 SELECT * FROM Faculty_Info; 

Faculty_Id Факултет_Име Факултет_Фамилия Faculty_Dept_Id Факултет_Дата_на_постъпване Факултет_Град Факултет_Заплата
1001 мечка Шарма 4001 2020-01-02 Делхи 20 000
1002 Бюлбюл Рой 4002 2019-12-31 Делхи 38 000
1004 Саураб Рой 4001 2020-10-10 Мумбай 45 000
1005 Шивани Сингхания 4001 2019-07-15 Колката 42000
1006 Авинаш Шарма 4002 2019-11-11 Делхи 28 000
1007 Шям Ти целуваш 4003 2021-06-21 Лакнау 35 000

Стъпка 5: Използвайте оператора IN, за да видите данните от таблицата Faculty_Info по различни начини

Следната заявка използва числови стойности с 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); 

Тази заявка показва само записа на онези факултети, чиято заплата се предава в оператора IN на клаузата WHERE.

Изход:

Faculty_Id Факултет_Име Faculty_Dept_Id Факултет_Дата_на_постъпване Факултет_Заплата
1002 Бюлбюл 4002 2019-12-31 38 000
1004 Саураб 4001 2020-10-10 45 000
1005 Шивани 4001 2019-07-15 42000
1007 Шям 4003 2021-06-21 35 000

Следната заявка използва текстови или символни стойности с логически оператор IN:

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

Тази заявка показва само записа на онези факултети, чийто град е включен в скобите на оператора IN в клаузата WHERE.

Изход:

Faculty_Id Факултет_Име Факултет_Дата_на_постъпване Факултет_Град
1004 Саураб 2020-10-10 Мумбай
1005 Шивани 2019-07-15 Колката
1007 Шям 2021-06-21 Лакнау

Следната заявка използва формат DATE с логически оператор 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); 

Тази заявка показва само онези записи на факултети, чиято дата на присъединяване е предадена в оператора IN на клаузата WHERE.

Изход:

Faculty_Id Факултет_Име Faculty_Dept_Id Факултет_Дата_на_постъпване Факултет_Заплата
1001 мечка 4001 2020-01-02 20 000
1004 Саураб 4001 2020-10-10 45 000
1005 Шивани 4001 2019-07-15 42000
1007 Шям 4003 2021-06-21 35 000

Следната заявка използва SQL команда UPDATE с логически оператор IN:

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

Тази заявка актуализира заплатата на тези факултети, чийто Dept_Id се предава в оператора IN на клаузата WHERE.

За да проверите резултата от горната заявка, въведете следната SELECT заявка в SQL:

 SELECT * FROM Faculty_Info; 
Faculty_Id Факултет_Име Факултет_Фамилия Faculty_Dept_Id Факултет_Дата_на_постъпване Факултет_Град Факултет_Заплата
1001 мечка Шарма 4001 2020-01-02 Делхи 20 000
1002 Бюлбюл Рой 4002 2019-12-31 Делхи 50 000
1004 Саураб Рой 4001 2020-10-10 Мумбай 45 000
1005 Шивани Сингхания 4001 2019-07-15 Колката 42000
1006 Авинаш Шарма 4002 2019-11-11 Делхи 50 000
1007 Шям Ти целуваш 4003 2021-06-21 Лакнау 50 000

SQL IN оператор с подзаявка

В езика за структурирани заявки можем също да използваме подзаявката с логическия оператор IN.

Синтаксисът на оператор IN с подзаявка е даден по-долу:

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

Ако искате да разберете оператор IN с подзаявка, трябва да създадете двете различни таблици в езика за структурирани заявки, като използвате оператора CREATE.

Следната заявка създава таблицата Faculty_Info в базата данни:

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

Следната заявка създава Отдел_Инфо таблица в базата данни:

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

Следните заявки INSERT вмъкват записите на Факултети в таблицата 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); 

Следните заявки INSERT вмъкват записите на отдели в таблицата 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); 

Следният оператор SELECT показва данните от таблицата Faculty_Info:

 SELECT * FROM Faculty_Info; 

Faculty_Id Факултет_Име Факултет_Фамилия Faculty_Dept_Id Факултет_Адрес Факултет_Град Факултет_Заплата
1001 мечка Шарма 4001 22 улица Ню Делхи 20 000
1002 Бюлбюл Рой 4002 120 улица Ню Делхи 38 000
1004 Саураб Рой 4001 221 улица Мумбай 45 000
1005 Шивани Сингхания 4001 501 улица Колката 42000
1006 Авинаш Шарма 4002 12 улица Делхи 28 000
1007 Шям Ти целуваш 4003 202 улица Лакнау 35 000

Следната заявка показва записите на отдела от таблицата Department_Info:

 SELECT * FROM Department_Info; 
Как да използвате IN в SQL

Следната заявка използва IN оператор с подзаявка:

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

Тази заявка показва записа на онези факултети, чийто Dept_ID на таблицата Faculty_Info съответства на Dept_Id на таблицата Department_Info.

Изход:

Faculty_Id Факултет_Име Факултет_Фамилия Faculty_Dept_Id Факултет_Адрес Факултет_Град Факултет_Заплата
1002 Бюлбюл Рой 4002 120 улица Ню Делхи 38 000
1006 Авинаш Шарма 4002 12 улица Делхи 28 000
1007 Шям Ти целуваш 4003 202 улица Лакнау 35 000

Какво НЕ е IN в SQL?

NOT IN е друг оператор в Structured Query Language, който е точно противоположен на оператора SQL IN. Тя ви позволява да получите достъп до онези стойности от таблицата, които не преминават в скобите на IN оператора.

Операторът NOT IN може да се използва в SQL заявките INSERT, UPDATE, SELECT и DELETE.

Синтаксис на оператора 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); 

Ако искате да използвате оператора NOT IN в изразите на SQL, трябва да следвате дадените стъпки в същата последователност:

  1. Създайте база данни в SQL системата.
  2. Създайте новата таблица в базата данни.
  3. Въведете данните в таблицата
  4. Преглед на въведените данни
  5. Използвайте оператора NOT IN, за да видите данните.

Сега ще обясним всяка стъпка една по една накратко с най-добрия SQL пример:

Стъпка 1: Създайте простата нова база данни

Следната заявка създава новото Гражданска_индустрия База данни в SQL сървър:

 CREATE Database Industry; 

Стъпка 2: Създайте новата таблица

Следната заявка създава Работник_Инфо маса в Гражданска_индустрия База данни:

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

Стъпка 3: Въведете стойностите

Следните заявки INSERT вмъкват записите на работници в таблицата 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); 

Стъпка 4: Вижте данните на таблицата

Следната заявка показва данните от таблицата Worker_Info.

 SELECT * FROM Worker_Info; 

Worker_ID Работник_Име Работник_Пол Работник_Възраст Работник_Адрес Работник_Заплата
1001 мечка Мъжки 18 Агра 35 000
1002 Бюлбюл Женски пол 18 Лакнау 42000
1004 Саураб Мъжки двадесет Лакнау 45 000
1005 Шивани Женски пол 18 Агра 28 000
1006 Авинаш Мъжки 22 Делхи 38 000
1007 Шям Мъжки 18 Бангалор 20 000

Стъпка 4: Използвайте оператор NOT IN

Следната заявка използва оператора NOT IN с числови данни:

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

Тази заявка SELECT показва всички работници в изхода, чиято заплата не е предадена в оператора NOT IN.

Резултатът от горното твърдение е показан в следната таблица:

Worker_ID Работник_Име Работник_Пол Работник_Възраст Работник_Адрес Работник_Заплата
1002 Бюлбюл Женски пол 18 Лакнау 42000
1004 Саураб Мъжки двадесет Лакнау 45 000
1007 Шям Мъжки 18 Бангалор 20 000

Следната заявка използва NOT IN логически оператор със символни или текстови стойности:

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

Тази заявка показва записа на всички работници, чийто адрес не е предаден в оператора NOT IN.

Изход:

Worker_ID Работник_Име Работник_Пол Работник_Възраст Работник_Адрес Работник_Заплата
1001 мечка Мъжки 18 Агра 35 000
1005 Шивани Женски пол 18 Агра 28 000
1007 Шям Мъжки 18 Бангалор 20 000