EXISTS ve NOT EXISTS Kullanımı

Merhabalar, bu yazımda SQL de kullanılan EXISTS ve NOT EXISTS kullanımlarını sizlere göstermeye çalışacağım.

Aslında bu ifadeler, where bloğunda kullanmış olduğumuz IN ifadesinin kullanımına benzer. IN ile farkı ise EXISTS ve NOT EXISTS kullanımı performans açısından IN kullanımına göre daha hızlıdır.
EXISTS ifadesinin geri dönüş tipi True ya da False şeklindedir. Yani karşılaştırma yaparken True sonucunu aldığı anda işlemi bitirir, IN ise ana sorgudan gelen her kaydı kontrol etmek için IN içerisinde bulunan alt sorgudaki tüm kayıtları kontrol eder.

EXISTS ve NOT EXISTS ifadeleri alt sorgudan getirilen değerlerin içerisinde, bir değerin olup olmaması durumuna göre işlemi gerçekleştirir.

  • EXISTS ifadesi kullanıldığında, alt sorguda istenilen şartın yerine getirildiği durumda bir üstteki sorgu değer üretir.
  • NOT EXISTS ifadesi ise tam tersi olarak, alt sorguda istenilen şartın sağlanmadığı durumda bir üstteki sorgu değer üretir.
  • Şimdi konuyla ilgili örnek sorguları incelersek,
     

    SELECT Ad FROM Ogrenci AS x WHERE EXISTS
    (SELECT * FROM Bolum AS y WHERE x.BolumId = y.BolumId)

    Buradaki sorguyu açıklamak gerekirse, Ogrenci tablosunda öğrencilerin adını listeleyen bir sorgumuz var, fakat listelenecek olan öğrenciler kısmındaki where koşulu, listelenecek kayıtları, eğer ki öğrencinin BolumId alanındaki değer, Bolum tablosundaki BolumId alanında var ise o zaman ilgili kayıtları yani öğrencilerin adını listeler.

     

    SELECT Ad FROM Ogrenci AS x WHERE NOT EXISTS
    (SELECT * FROM Bolum AS y WHERE x.BolumId = y.BolumId)

    Yine aynı şekilde buradaki sorguda aynı sorgunun NOT EXISTS li hali, bu sorguyu açıklamak gerekirse de Bolum tablosunda ilgili öğrencilerin bölümünde olmayan öğrencilerin adını getirir.

    Anlatacaklarım bu kadar, umarım faydalı olmuştur.

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir