Temel Veritabanı Eğitimi | 14 – Alt Sorgular

ALT SORGULAR

Alt sorguların sonuçları ana sorgularda kullanılır.

Yukarıdaki sorgu yapısında bir tane ana sorgu bir tanede alt sorgu bulunmaktadır. Ana sorguya bir değer verebilmek için ilk önce alt sorgu yapılır.

SELECT salary FROM employees
WHERE last_name = ‘Abel’

Yukarıdaki sorguda “employees tablosundan salary ‘ yi getir ama bir şartım var last_name ‘ i Abel olanın salary ‘ sini getir” demiş olduk. Abel ‘ in maaşının 5000 olduğunu varsayalım o zaman ana sorgu kısmı şöyle olacaktır.

SELECT last_name FROM employees
WHERE salary > 5000;

Bu durumda da “employees tablosundan last_name ‘ i getir ama bir şartım var maaşı 5000 den büyük olanların last_name ‘ ini getireceksin” demiş oluruz.

Çok Satırlı Alt Sorgular

Operatör Anlam
IN Listedeki herhangi bir üyeye eşit ise
ANY Alt sorgu tarafından dönen herhangi bir değerden
ALL Alt sorgu tarafından dönen bütün değerlerden

Örnek üzerinden ilerleyelim.

Yukarıda ANY ifadesi kullanılmış. İlk önce alt sorguyu yapmamız gerekiyor.

SELECT salary FROM employees
WHERE job_id = ‘IT_PROG’;

Burada “employees tablosundan salary ‘ yi getir ama bir şartım var job_id 2 si IT_PROG olanların salary ‘ sini getir” demiş olduk. Varsayalım ki mesleği IT_PROG olan 3 kişi var ve bu 3 kişinin maaşları sırasıyla 9000, 6000 ve 5000 olsun. Bu durumda ana sorguya 9000, 6000 ve 5000 değerleri gidecektir. ANY ifadesi kullandığımıza göre “alt sorgu tarafından dönen herhangi bir değerden” diyeceğiz. Yani maaşın 9000, 6000 veya 5000 değerlerinden herhangi birinden küçük çıkması bizim için yeterlidir.

Öte yandan en alta baktığımızda AND ifadesi kullanılmış. Yani bize demek istiyor ki, maaşı 9000, 6000 veya 5000 ‘ değerlerinden herhangi birinden küçük olan ve job_id ‘ si IT_PROG olmayanların employee_id ‘ sini , last_name ‘ ini , job_id ‘ sini ve salary ‘ sini employees tablosundan seç getir!!

Bu örnekte ise ALL ifadesi kullanılmış. Yine her zaman olduğu gibi ilk önce alt sorguyu yapacağız.

SELECT salary FROM employees
WHERE job_id = ‘IT_PROG’;

Burada “employees tablosundan salary ‘ yi getir ama bir şartım var job_id 2 si IT_PROG olanların salary ‘ sini getir” demiş olduk. Varsayalım ki mesleği IT_PROG olan 3 kişi var ve bu 3 kişinin maaşları sırasıyla 9000, 6000 ve 5000 olsun. Bu durumda ana sorguya 9000, 6000 ve 5000 değerleri gidecektir. ALL ifadesi kullandığımıza göre “alt sorgu tarafından dönen bütün değerlerden” diyeceğiz. Yani maaşın 9000, 6000 veya 5000 değerlerinin hepsinden küçük olması gerekiyor. En küçük değer 5000 olduğuna göre 5000 ‘ den küçük olan maaşlar göz önünde bulundurulacaktır.

Öte yandan en alta baktığımızda AND ifadesi kullanılmış. Yani bize demek istiyor ki, alt sorgudan gelen maaş değerleri arasında en küçük olan maaştan daha küçük olan ve job_id ‘ si IT_PROG olmayanların employee_id ‘ sini , last_name ‘ ini , job_id ‘ sini ve salary ‘ sini employees tablosundan seç getir!!

 

Cumhuriyet Üniversitesi Yönetim Bilişim Sistemleri Bölümü 4. sınıf öğrencisi olan Yeşiltepe, Certified Ethical Hacker ve Sızma Testi eğitimleri almıştır. Kendisini Network, System ve Cyber Intelligence alanlarında yetiştirmektedir. Bulunduğu üniversitede Siber Güvenlik Topluluğu kurucusu olan Yeşiltepe, bilgi güvenliği farkındalığını artırmak ve siber güvenlik alanında yetişecek insan sayısına katkıda bulunmak için çeşitli çalışmalar yürütmektedir. 2018 yılının son aylarına doğru p4wsec takımını kurduktan sonra ekip arkadaşları ile birlikte Vulnerable VM çözümlerini yayımlayarak bu alana ilgi duyan kişilerin farklı yöntemler öğrenmelerine katkı sağlamaya devam etmektedir.