logo

SQL'de IN Nasıl Kullanılır

Bu SQL makalesinde IN anahtar sözcüğünün SQL veritabanı sorgularında nasıl kullanılacağını öğreneceksiniz.

SQL'de IN anahtar sözcüğü nedir?

İÇİNDE Yapılandırılmış Sorgu Dili'nde, veritabanı kullanıcılarının WHERE yan tümcesinde birden fazla değer tanımlamasına olanak tanıyan mantıksal bir operatördür.

IN operatörlü WHERE yan tümcesi, sonuçta verilen değer kümesiyle eşleşen kayıtları gösterir. Alt sorguyu IN operatörünün parantezinde de belirtebiliriz.

IN operatörünü SQL veritabanındaki INSERT, SELECT, UPDATE ve DELETE sorgularıyla kullanabiliriz.

SQL'deki IN operatörü, sorgulardaki birden çok OR koşulunun işleminin yerini alır.

IN operatörünün sözdizimi:

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

SQL ifadelerinde IN operatörünü kullanmak istiyorsanız aşağıda verilen adımları aynı sıra ile uygulamanız gerekmektedir:

  1. SQL'de bir veritabanı oluşturun.
  2. Yeni SQL tablosunu oluşturun.
  3. Verileri tabloya ekleyin.
  4. Eklenen verileri görüntüleyin.
  5. Tablonun verilerini görüntülemek için SQL IN operatörünü kullanın.

Şimdi her adımı tek tek en iyi SQL örneğiyle kısaca anlatacağız:

Adım 1: Basit, yeni bir veritabanı oluşturun

İlk adım Yapılandırılmış Sorgu Dili'nde yeni bir veritabanı oluşturmaktır.

Aşağıdaki CREATE deyimi yeniyi oluşturur Mekanik_Kolej SQL sunucusundaki veritabanı:

 CREATE Database Mechanical_College; 

2. Adım: Yeni bir tablo oluşturun

Şimdi veritabanında yeni tablonun oluşturulmasına yardımcı olacak aşağıdaki SQL sözdizimini kullanın:

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

Aşağıdaki CREATE ifadesi şunu oluşturur: Fakülte_Bilgisi masadaki Mekanik_Kolej Veri tabanı:

 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. Adım: Verileri tabloya ekleyin

Aşağıdaki INSERT sorguları Fakültelerin kayıtlarını Fakülte_Info tablosuna ekler:

 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. Adım: Eklenen Verileri Görüntüleyin

Aşağıdaki SELECT ifadesi Fakülte_Bilgi tablosunun verilerini görüntüler:

 SELECT * FROM Faculty_Info; 

Fakülte_Kimliği Fakülte_First_Name Fakülte_Soyadı_Adı Fakülte_Bölüm_Id Fakülte_Katılım_Tarihi Fakülte_Şehir Fakülte_Maaş
1001 ayı Şarma 4001 2020-01-02 Delhi 20000
1002 Bülbül Roy 4002 2019-12-31 Delhi 38000
1004 Saurabh Roy 4001 2020-10-10 Mumbai 45000
1005 Şivani Singhania 4001 2019-07-15 Kalküta 42000
1006 Avinaş Şarma 4002 2019-11-11 Delhi 28000
1007 Shyam Sen öp 4003 2021-06-21 şans eseri 35000

Adım 5: Fakülte_Bilgi tablosunun verilerini farklı şekillerde görüntülemek için IN Operatörünü kullanın

Aşağıdaki sorgu IN operatörüyle sayısal değerleri kullanır:

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

Bu sorgu sadece WHERE deyiminin IN operatöründe maaşı geçen Fakültelerin kaydını gösterir.

Çıktı:

Fakülte_Kimliği Fakülte_First_Name Fakülte_Bölüm_Id Fakülte_Katılım_Tarihi Fakülte_Maaş
1002 Bülbül 4002 2019-12-31 38000
1004 Saurabh 4001 2020-10-10 45000
1005 Şivani 4001 2019-07-15 42000
1007 Shyam 4003 2021-06-21 35000

Aşağıdaki sorgu IN mantıksal işleciyle metin veya karakter değerlerini kullanır:

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

Bu sorgu sadece WHERE cümleciğinde IN operatörünün parantezinde şehri bulunan Fakültelerin kaydını gösterir.

Çıktı:

Fakülte_Kimliği Fakülte_First_Name Fakülte_Katılım_Tarihi Fakülte_Şehir
1004 Saurabh 2020-10-10 Mumbai
1005 Şivani 2019-07-15 Kalküta
1007 Shyam 2021-06-21 şans eseri

Aşağıdaki sorgu IN mantıksal işleciyle DATE biçimini kullanır:

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

Bu sorgu sadece WHERE deyiminin IN operatöründe katılma tarihi geçen Fakültelerin kayıtlarını gösterir.

Çıktı:

Fakülte_Kimliği Fakülte_First_Name Fakülte_Bölüm_Id Fakülte_Katılım_Tarihi Fakülte_Maaş
1001 ayı 4001 2020-01-02 20000
1004 Saurabh 4001 2020-10-10 45000
1005 Şivani 4001 2019-07-15 42000
1007 Shyam 4003 2021-06-21 35000

Aşağıdaki sorgu IN mantıksal operatörüyle SQL UPDATE komutunu kullanır:

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

Bu sorgu, WHERE ifadesinin IN operatöründe Dept_Id'si geçirilen Fakültelerin maaşını günceller.

Yukarıdaki sorgunun sonucunu kontrol etmek için SQL'de aşağıdaki SELECT sorgusunu yazın:

 SELECT * FROM Faculty_Info; 
Fakülte_Kimliği Fakülte_First_Name Fakülte_Soyadı_Adı Fakülte_Bölüm_Id Fakülte_Katılım_Tarihi Fakülte_Şehir Fakülte_Maaş
1001 ayı Şarma 4001 2020-01-02 Delhi 20000
1002 Bülbül Roy 4002 2019-12-31 Delhi 50000
1004 Saurabh Roy 4001 2020-10-10 Mumbai 45000
1005 Şivani Singhania 4001 2019-07-15 Kalküta 42000
1006 Avinaş Şarma 4002 2019-11-11 Delhi 50000
1007 Shyam Sen öp 4003 2021-06-21 şans eseri 50000

Alt Sorgulu SQL IN Operatörü

Yapılandırılmış Sorgu Dili'nde alt sorguyu IN mantıksal operatörüyle de kullanabiliriz.

IN operatörünün alt sorgulu sözdizimi aşağıda verilmiştir:

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

IN operatörünü alt sorgu ile anlamak istiyorsanız Yapılandırılmış Sorgu Dili'nde CREATE ifadesini kullanarak iki farklı tablo oluşturmanız gerekir.

Aşağıdaki sorgu Veritabanında Fakülte_Bilgi tablosunu oluşturur:

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

Aşağıdaki sorgu şunu oluşturur: Departman_Bilgisi Veritabanındaki tablo:

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

Aşağıdaki INSERT sorguları Fakültelerin kayıtlarını Fakülte_Info tablosuna ekler:

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

Aşağıdaki INSERT sorguları departmanların kayıtlarını Departman_Bilgi tablosuna ekler:

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

Aşağıdaki SELECT ifadesi Fakülte_Bilgi tablosunun verilerini görüntüler:

 SELECT * FROM Faculty_Info; 

Fakülte_Kimliği Fakülte_First_Name Fakülte_Soyadı_Adı Fakülte_Bölüm_Id Fakülte_Adresi Fakülte_Şehir Fakülte_Maaş
1001 ayı Şarma 4001 22 Sokak Yeni Delhi 20000
1002 Bülbül Roy 4002 120 Sokak Yeni Delhi 38000
1004 Saurabh Roy 4001 221 Sokak Mumbai 45000
1005 Şivani Singhania 4001 501 Sokak Kalküta 42000
1006 Avinaş Şarma 4002 12 Sokak Delhi 28000
1007 Shyam Sen öp 4003 202 Sokak şans eseri 35000

Aşağıdaki sorgu Departman_Bilgisi tablosundan departmanın kayıtlarını gösterir:

 SELECT * FROM Department_Info; 
SQL'de IN Nasıl Kullanılır

Aşağıdaki sorgu IN operatörünü bir alt sorguyla birlikte kullanır:

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

Bu sorgu, Fakülte_Bilgisi tablosunun Dept_ID'si ile Bölüm_Bilgisi tablosunun Dept_Id'si eşleşen Fakültelerin kaydını görüntüler.

Çıktı:

Fakülte_Kimliği Fakülte_First_Name Fakülte_Soyadı_Adı Fakülte_Bölüm_Id Fakülte_Adresi Fakülte_Şehir Fakülte_Maaş
1002 Bülbül Roy 4002 120 Sokak Yeni Delhi 38000
1006 Avinaş Şarma 4002 12 Sokak Delhi 28000
1007 Shyam Sen öp 4003 202 Sokak şans eseri 35000

SQL'de IN DEĞİL olan nedir?

NOT IN, Yapılandırılmış Sorgu Dili'ndeki SQL IN operatörünün tam tersi olan başka bir operatördür. IN operatörünün parantezinde geçmeyen bu değerlere tablodan ulaşmanızı sağlar.

NOT IN operatörü INSERT, UPDATE, SELECT ve DELETE SQL sorgularında kullanılabilir.

NOT IN operatörünün sözdizimi:

 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 operatörünü SQL ifadelerinde kullanmak istiyorsanız, verilen adımları aynı sırayla uygulamanız gerekir:

  1. SQL sisteminde bir veritabanı oluşturun.
  2. Veritabanında yeni tabloyu oluşturun.
  3. Verileri tabloya ekleyin
  4. Eklenen verileri görüntüle
  5. Verileri görüntülemek için NOT IN operatörünü kullanın.

Şimdi her adımı tek tek en iyi SQL örneğiyle kısaca anlatacağız:

Adım 1: Basit yeni veritabanını oluşturun

Aşağıdaki sorgu yeniyi oluşturur İnşaat_Sanayisi SQL sunucusundaki veritabanı:

 CREATE Database Industry; 

2. Adım: Yeni tabloyu oluşturun

Aşağıdaki sorgu şunu oluşturur: İşçi_Bilgisi masadaki İnşaat_Sanayisi Veri tabanı:

 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. Adım: Değerleri Ekleyin

Aşağıdaki INSERT sorguları, çalışanların kayıtlarını Worker_Info tablosuna ekler:

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

Adım 4: Tablonun Verilerini Görüntüleyin

Aşağıdaki sorgu Worker_Info tablosunun verilerini görüntüler.

 SELECT * FROM Worker_Info; 

İşçi_ID'si Çalışan_Adı İşçi_Gender İşçi_Yaşı İşçi_Adresi İşçi_Maaş
1001 ayı Erkek 18 Ağrı 35000
1002 Bülbül Dişi 18 şans eseri 42000
1004 Saurabh Erkek yirmi şans eseri 45000
1005 Şivani Dişi 18 Ağrı 28000
1006 Avinaş Erkek 22 Delhi 38000
1007 Shyam Erkek 18 Bangalor 20000

Adım 4: NOT IN operatörünü kullanın

Aşağıdaki sorgu sayısal verilerle NOT IN operatörünü kullanır:

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

Bu SELECT sorgusu, çıktıda maaşları NOT IN operatörüne aktarılmayan tüm çalışanları gösterir.

Yukarıdaki ifadenin sonucu aşağıdaki tabloda gösterilmektedir:

İşçi_ID'si Çalışan_Adı İşçi_Gender İşçi_Yaşı İşçi_Adresi İşçi_Maaş
1002 Bülbül Dişi 18 şans eseri 42000
1004 Saurabh Erkek yirmi şans eseri 45000
1007 Shyam Erkek 18 Bangalor 20000

Aşağıdaki sorgu karakter veya metin değerleriyle NOT IN mantıksal operatörünü kullanır:

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

Bu sorgu, adresi NOT IN operatöründe aktarılmayan tüm Çalışanların kaydını gösterir.

Çıktı:

İşçi_ID'si Çalışan_Adı İşçi_Gender İşçi_Yaşı İşçi_Adresi İşçi_Maaş
1001 ayı Erkek 18 Ağrı 35000
1005 Şivani Dişi 18 Ağrı 28000
1007 Shyam Erkek 18 Bangalor 20000