PostgreSQL EXISTS with SELECT Operator (Örnek)

⚡ Akıllı Özet

PostgreSQL EXISTS, ilişkili bir alt sorgunun herhangi bir satır döndürüp döndürmediğini test eden bir Boolean operatörüdür ve SELECT, INSERT, UPDATE ve DELETE ifadelerinin eşleşen kayıtların varlığına veya yokluğuna göre verileri verimli bir şekilde filtrelemesini sağlar.

  • ???? Sözdizimi: WHERE EXISTS (alt sorgu) ifadesi, alt sorgu en az bir satır döndürdüğünde true değerini döndürür.
  • 🔗 İlişkili Alt Sorgu: EXISTS ifadesi, iç ve dış sorguları birbirine bağlayarak, paylaşılan bir anahtar üzerinden satırları eşleştirir.
  • Kısa Devre: EXISTS, eşleşen ilk satırda durur, bu nedenle büyük tablolarda iyi performans gösterir.
  • 🔁 Dört Açıklama: Bu operatör SELECT, INSERT, UPDATE ve DELETE sorguları içinde çalışır.
  • 🛡️ MEVCUT DEĞİL: Güvenli bir şekilde satırları hariç tutar ve NOT IN ifadesinin bozulmasına neden olan NULL tuzağından kaçınır.
  • 🤖 Yapay Zeka Sorguları: Yardımcılar EXISTS koşulları oluşturur ve ilişkili alt sorgu performans risklerini işaretler.

PostgreSQL Seçili olarak MEVCUTTUR Operator

Var olan nedir? PostgreSQL?

MKS PostgreSQL VAR `EXISTS` operatörü, bir alt sorguda bir veya daha fazla satırın olup olmadığını test eder. Bu, operatörün bir alt sorguyla birlikte kullanıldığı anlamına gelir. Alt sorguda en az bir satır bulunduğunda `EXISTS` operatörünün doğrulandığı söylenir. Bu işlemi `SELECT`, `UPDATE`, `INSERT` ve `DELETE` ifadeleriyle birlikte kullanabilirsiniz.

PostgreSQL EXISTS Sorgu Sözdizimi

İşte sözdizimi PostgreSQL EXISTS beyanı:

WHERE EXISTS (subquery);

Yukarıdaki sözdizimi, EXISTS operatörünün bir alt sorgu olan bir bağımsız değişkeni aldığını gösterir. Alt sorgu yalnızca bir SELECT ifadesi bu, sütun adları veya ifadelerin listesi yerine SELECT * ile başlamalıdır.

PostgreSQL SELECT ifadesiyle EXISTS

Şimdi EXISTS operatörüyle birlikte SELECT sorgusunun nasıl kullanılacağına bakalım. Aşağıdaki tablolarımız var:

Kitap:

PostgreSQL SELECT ifadesiyle EXISTS

Fiyat:

PostgreSQL SELECT ifadesiyle EXISTS

Aşağıdaki ifadeyi çalıştırın:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

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

PostgreSQL SELECT sorgusunun sonucuyla EXISTS

Yukarıdaki komut, Kitap tablosundaki kimliği alt sorguya göre herhangi bir kaydın kimliğiyle eşleşen tüm kayıtları döndürmelidir. Yalnızca bir kimlik eşleştirildi. Bu nedenle yalnızca bir kayıt döndürüldü.

PostgreSQL INSERT ifadesiyle EXISTS

EXISTS operatörünü şu şekilde kullanabiliriz: INSERT beyanıAşağıdaki 3 tablomuz var:

Kitap:

PostgreSQL INSERT ifadesiyle EXISTS

Fiyat:

PostgreSQL INSERT ifadesiyle EXISTS

Fiyat2:

PostgreSQL INSERT ifadesiyle EXISTS

Daha sonra şu ifadeyi çalıştırabiliriz:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Fiyat tablosu şu an şu şekilde:

PostgreSQL INSERT ifadesinin sonucuyla birlikte EXISTS

Price5 adlı tablodaki id'si 2 olan satır eşleştirildi. Bu kayıt daha sonra Fiyat tablosuna eklendi.

PostgreSQL GÜNCELLEME Bildirimi ile MEVCUT

EXISTS operatörünü UPDATE deyiminde kullanabiliriz.

Aşağıdaki sorguyu çalıştırın:

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

PostgreSQL GÜNCELLEME Bildirimi ile MEVCUT

Fiyat tablosunun fiyat sütununu güncelliyoruz. Amacımız aynı kimliği paylaşan öğelerin fiyatlarının aynı olmasını sağlamaktır. Yalnızca bir satır eşleşti, yani 5.

Ancak fiyatlar eşit yani 205 olduğundan güncelleme yapılmadı. Eğer farklılık olsaydı güncelleme yapılırdı.

PostgreSQL EXISTS with DELETE Deyimi

A PostgreSQL DELETE ifadesi EXISTS operatörünü kullanabilir. İşte bir örnek:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Fiyat tablosu şu an şu şekilde:

PostgreSQL EXISTS with DELETE Deyimi

Kimliği 5 olan satır silindi.

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

SQL kabuğunun ötesinde, aynı EXISTS sorguları pgAdmin arayüzü üzerinden görsel olarak da yürütülebilir. Şimdi bu işlemlerin pgAdmin kullanılarak nasıl gerçekleştirilebileceğine bakalım:

SELECT ifadesiyle

Aşağıda EXISTS sorgusunu kullanmanın adımları verilmiştir. PostgreSQL pgAdmin kullanarak bir SELECT sorgusuyla:

) 1 Adım pgAdmin hesabınıza giriş yapın. pgAdmin'i açın ve kimlik bilgilerinizle hesabınıza giriş yapın.

) 2 Adım Bir demo veritabanı oluşturun.

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

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

) 3 Adım Sorgu düzenleyicisine aşağıdaki sorguyu yazın:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

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

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

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

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

INSERT Deyimi 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.

EXISTS ifadesi PostgreSQL pgAdmin'i kullanma

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

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

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

EXISTS ifadesi PostgreSQL pgAdmin'i kullanma

Fiyat tablosu artık aşağıdaki gibi olmalıdır:

EXISTS ifadesi PostgreSQL pgAdmin'i kullanma

GÜNCELLEME Bildirimi 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.

EXISTS ifadesi PostgreSQL pgAdmin'i kullanma

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

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

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

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

Fiyat tablosu artık aşağıdaki gibi olmalıdır:

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

DELETE İfadesi 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.

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

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

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

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

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

Fiyat tablosu artık aşağıdaki gibi olmalıdır:

PostgreSQL pgAdmin kullanarak EXISTS ifadesi

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

SSS

EXISTS, ilişkili bir alt sorgunun herhangi bir satır döndürüp döndürmediğini test eder ve ilk eşleşmede durur; bu nedenle büyük alt sorgular için uygundur. IN ise bir değeri bir listeyle karşılaştırır ve küçük, sabit kümeler için uygundur.

Alt sorguda NULL değeri bulunduğunda NOT IN sıfır satır döndürebilir, çünkü karşılaştırma bilinmez hale gelir. NOT EXISTS ise NULL değerlerini yok sayar ve her satırı doğru şekilde değerlendirir; bu da onu anti-join işlemleri için güvenilir bir seçenek haline getirir.

İlişkili bir alt sorgu, dış sorgudaki bir sütuna referans verir; örneğin, WHERE Book.id = Price.id. EXISTS, her dış satır için bunu yeniden kontrol eder ve bir eşleşme bulunduğunda true değerini döndürür.

Evet. EXISTS, alt sorgu tek bir satır ürettiği anda true değerini döndürür, bu nedenle geri kalanını taramaz. Bu kısa devre davranışı, büyük ve ilişkili alt sorgularda verimli olmasını sağlar.

Hayır. EXISTS yalnızca alt sorgunun bir satır döndürüp döndürmediğini kontrol eder, bu nedenle SELECT *, SELECT 1 veya SELECT id aynı şekilde davranır. Alt sorgunun içindeki sütun listesi sonucu etkilemez.

Alt sorguda birleştirilen sütunları indeksleyin, korelasyon koşulunu sargable tutun ve EXPLAIN ANALYZE komutunu çalıştırın. PostgreSQL Genellikle, indeksler bunu desteklediğinde EXISTS ifadesini verimli bir yarı birleştirmeye dönüştürür.

Yapay zekâ asistanları, basit İngilizce kuralları EXISTS yan tümcelerine dönüştürür, ilişkili alt sorguyu oluşturur ve NOT IN NULL tuzakları konusunda uyarıda bulunur. Ayrıca, optimizasyon için indeksler ve EXPLAIN ipuçları da önerirler.

Evet. Yapay zekâ destekli yardımcı pilot, alt sorgu kalıplarını algılar ve IN ifadesini EXISTS veya NOT IN ifadesini NOT EXISTS olarak yeniden yazarak büyük tablolarda NULL güvenliğini ve performansını artırır.

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