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:
- SQL'de bir veritabanı oluşturun.
- Yeni SQL tablosunu oluşturun.
- Verileri tabloya ekleyin.
- Eklenen verileri görüntüleyin.
- 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;
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:
- SQL sisteminde bir veritabanı oluşturun.
- Veritabanında yeni tabloyu oluşturun.
- Verileri tabloya ekleyin
- Eklenen verileri görüntüle
- 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 |