В тази 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 изразите, трябва да следвате стъпките, дадени по-долу в същата последователност:
- Създайте база данни в SQL.
- Създайте новата SQL таблица.
- Въведете данните в таблицата.
- Преглед на въведените данни.
- Използвайте оператора 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 оператор с подзаявка:
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, трябва да следвате дадените стъпки в същата последователност:
- Създайте база данни в SQL системата.
- Създайте новата таблица в базата данни.
- Въведете данните в таблицата
- Преглед на въведените данни
- Използвайте оператора 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 |