PostgreSQL Örneklerle IN, IN Değil

⚡ Akıllı Özet

PostgreSQL IN operatörü, bir değerin WHERE yan tümcesi içindeki bir listede veya alt sorguda bulunup bulunmadığını kontrol eder ve SELECT, UPDATE, INSERT ve DELETE ifadelerindeki birden fazla OR koşulunun yerini alarak daha temiz, daha hızlı ve daha okunaklı bir filtreleme sağlar.

  • ???? Sözdizimi: `value IN (liste)` ifadesi, değer listedeki herhangi bir öğeyle eşleştiğinde `true` değerini döndürür.
  • 🔤 Karakter Listeleri: Parantez içindeki metin değerlerini tek tırnak içine alın.
  • 🔢 Sayısal Listeler: Tam eşleşme için sayıları tırnak işaretleri olmadan doğrudan karşılaştırın.
  • ???? DEĞİL: Verilen listede değeri bulunmayan satırları döndürür.
  • ⚠️ NULL Tuzağı: NOT IN ifadesinin içindeki bir NULL değeri, sessizce sıfır satır döndürebilir.
  • 🤖 Yapay Zeka Sorguları: Yardımcılar, IN maddeleri oluşturur ve NULL değerlerini ve performans risklerini işaretler.

PostgreSQL İÇİNDE, İÇİNDE DEĞİL (Örneklerle)

Nedir? PostgreSQL İÇİNDE?

IN operatörü, bir değerin diğer değerler listesinde olup olmadığını kontrol etmeyi sağlayan WHERE yan tümcesinde kullanılır. IN işlemi, SELECT, UPDATE, INSERT veya DELETE ifadelerinde birden fazla OR koşuluna duyulan ihtiyacı azaltmaya yardımcı olur.

Sözdizimi

IN operatörü aşağıdaki sözdizimini alır:

value IN (value_1, value_2, ...)

Değer, listede kontrol ettiğiniz değerdir.

Değer_1, değer_2… liste değerleridir.

Değer listede bulunursa operatör doğru değerini döndürür.

Liste, sayılar veya metinlerden oluşan bir küme veya hatta bir komutun çıktı sonucu olabilir. SELECT ifadesi Aşağıda gösterildiği gibi:

value IN (SELECT value FROM table-name);

Parantez içine yerleştirilen ifadeye alt sorgu denir.

PostgreSQL Karakterli

IN operatörünü karakter değerleriyle nasıl kullanabileceğinizi gösterelim.

Aşağıdaki tabloyu düşünün:

Çalışanlar:

PostgreSQL Karakterli

Yukarıdaki tabloya aşağıdaki sorguyu uygulayalım:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Aşağıdakileri döndürür:

PostgreSQL Karakter sonucuyla birlikte

Elimizde üç isimden oluşan bir liste var. Bu isimlerden herhangi birini Çalışanlar tablosunun isim sütununda bulup bulamayacağımızı araştırıyoruz. Kate Joel, tablodaki kayıtlardan biriyle eşleştirildi ve ayrıntıları döndürüldü.

PostgreSQL Sayısal Giriş

Şimdi IN operatörünü sayısal değerlerle nasıl kullanabileceğimizi görelim.

Aşağıda verilen Fiyat tablosunu göz önünde bulundurun:

Fiyat:

PostgreSQL Sayısal Giriş

Aşağıdaki sorguyu tabloya karşı çalıştırabiliriz:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Bu, aşağıdakileri döndürür:

PostgreSQL Sayısal sonuçlu giriş

4 sayısal değerden oluşan bir liste oluşturduk. Bu değerlerden herhangi birini Price tablosunun price sütununda bulunan değerlerle eşleştirip eşleştiremeyeceğimizi kontrol ediyoruz. İki değer eşleştirildi ve ayrıntıları döndürüldü.

NOT'u kullanarak Operator

IN operatörü NOT operatörüyle birlikte kullanılabilir. Belirtilen sütunda bulunmayan değerleri döndürür. Bunu göstermek için Fiyat tablosunu kullanacağız.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Aşağıdakini döndürecektir:

PostgreSQL NOT operatörünü kullanarak

4 sayısal değere sahip bir liste oluşturduk. Fiyat tablosunun fiyat sütununu listenin parçası olmayan değerler için kontrol ediyoruz. 250 ve 300 olmak üzere iki değer bulunamadı. Bu nedenle ayrıntıları döndürüldü.

pgAdmin'i kullanma

SQL kabuğunun ötesinde, aynı IN ve NOT IN sorguları pgAdmin arayüzü üzerinden görsel olarak da çalıştırılabilir.

Karakterli

Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  1. Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  2. Demo'yu tıklayın.

pgAdmin'i Karakterle Kullanma

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin'i Karakter Sorgusuyla Kullanmak

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin'i Karakter Sonucuyla Kullanmak

Sayısal ile

Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  1. Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  2. Demo'yu tıklayın.

pgAdmin'i Sayısal İle Kullanma

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin'i Sayısal Sorgularla Kullanmak

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin'i sayısal sonuçlarla kullanma

NOT'u kullanarak Operator

Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  1. Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  2. Demo'yu tıklayın.

pgAdmin'de NOT operatörünü kullanma

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin'de NOT operatörü sorgusu kullanma

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin'de NOT operatörünün kullanılması sonucu

Bu Eğitimde kullanılan Veritabanını İndirin

SSS

In PostgreSQLEXISTS, büyük alt sorgularda genellikle IN'den daha hızlı çalışır çünkü ilk eşleşmede durur. Küçük, sabit listeler için IN basit ve verimlidir. Her ikisini de kendi verilerinizde EXPLAIN ANALYZE ile test edin.

NOT IN operatörü NULL değerlerini bilinmeyen olarak ele alır; bu nedenle, liste veya alt sorgu NULL içeriyorsa, tüm koşul bilinmeyen olarak değerlendirilebilir ve sıfır satır döndürebilir. NULL değerlerini filtreleyin veya bunun yerine NOT EXISTS kullanın.

IN ifadesi, uzun OR koşulları zincirlerini tek bir okunabilir maddeyle değiştirir. WHERE id IN (1,2,3) ifadesi, WHERE id=1 OR id=2 OR id=3 ifadesine eşittir, ancak daha kısa, daha açık ve bakımı daha kolaydır.

Evet. PostgreSQL x IN (a, b, c) ifadesini x = ANY (ARRAY[a, b, c]) ifadesine eşdeğer olarak ele alır. Her ikisi de aynı sonucu ve genellikle aynı sorgu planını üretir.

Yapay zekâ asistanları, düz İngilizce'den IN yan tümceleri oluşturur, doğru değer listesini önerir ve NOT IN'deki NULL risklerini işaretler. Ayrıca yavaş çalışan sorguları yeniden yazarlar ve optimizasyon için EXPLAIN ipuçları eklerler.

Evet. AI Copilot araçları, bir sütunda tekrarlanan VEYA koşullarını tespit eder ve bunları tek bir İÇİNDE koşullu listeye dönüştürerek okunabilirliği artırır ve mantık hatalı olasılığını azaltır.

Evet. Parantez içine bir SELECT sorgusu yerleştirin: WHERE id IN (SELECT id FROM orders). Alt sorgu olarak adlandırılan iç sorgu, IN ile kontrol edilen değerlerin listesini sağlar.

Büyük tablolar için, NOT EXISTS veya IS NULL ile LEFT JOIN genellikle NOT IN'den daha iyi performans gösterir çünkü PostgreSQL Etkin bir anti-join oluşturur. Ayrıca karşılaştırılan sütunların indekslendiğinden emin olun.

Bu yazıyı şu şekilde özetleyin: