İleri Düzey Sql Cümlecikleri

Bu bölümde öğreniklerimizin biraz daha ileri düzeyinde olan cümlecikleri öğreneceğiz. Hadi incelemeye başlayalım.

Bu bölümde öğreniklerimizin biraz daha ileri düzeyinde olan cümlecikleri öğreneceğiz. Hadi incelemeye başlayalım.

İleri Düzey Sorgu Teknikleri
öğrenci tablosu
adi, soyadi, sinif, numara (PK)

notlar tablosu
numara (FK) , ders, kacinci, notu, ogretmenadi

İç İçe Sorgu (Nested)
Where ifadesine şart olarak yazılan sorgu çeşitidir.

Hiçbir notu olmayan öğrencilerin listesini almak istiyoruz. Notu girilmeyen öğrencinin numarası notlar tablosunda bulunmaz. Bu durumda notlar tablosunda numarası olmayan öğrencilerin listesini almamız gerekiyor

select * from ogrenci where numara not in (select numara from notlar)
Bu cümlecik hatalı oluşturulan veritabanı verilerinde işlem yaparken PK sı olmayan FK ları bulmada diğer adıyla yetim kayıtları bulmada bu cümlecik kullanılabilir. ikinci tabloda FK alanında olupta birinci tabloda PK alanında olmayan kayıt yetimdir. Veri bütünlüğüne aykırıdır. FK kısıtlaması bunu engeller ama tasarımını yapmadığınız veritabanlarında tablolar arası ilişki kurulmaksızın kayıt ekleme silme işlemleri yapılırsa kaydın yetim kalma ihtimali doğar. FK kısıtlaması bunu engeller. Tablolar arası ilişki sadece FK kısıtlamasını sağlar. Tablolar arası ilişki olsun olmasın join sorgularıyla iki veya daha fazla tablo birleştirişebilir.


notu girilen öğrenciler içinse
select * from ogrenci where numara in (select numara from notlar)
cümleciği kullanılır.

in operatörü kullanıldığı gibi = operatörüde kullanılabilir

Notu en düşük olan öğrenciyi notlar tablosundan bul, o nota sahip öğrencinin bilgilerini ekrana getiren cümlecik
select * from ogrenci where numara=(select numara from notlar where notu=(select min(notu) from notlar))
bu örnek bir mağazada herhangi bir ayda en az veya en çok satış yapan bölümün-kişinin bulunması içinde kullanılabilir.

Bir Soru :Bu sorgular join kullanılarak yapılabilir mi?
Bir Soru: ilk 5 kaydı seçmek için top 5 ifadesi kullanılır. Peki ilk 5 ten sonra gelen ilk 10 kaydı seçmek için nested query kullanılır mı? Bu işi bu sorgu türü yapabilir mi?

 

Üretilen Tablolar

Bazı durumlarda tablo yerine sorgu sonucunda oluşturulan kayıtlarla çalışmamız gerekir.
select * from ogrenci
fromdan sonra tabloadi yazılır. Tablo adı yerine sorgu yazılır ve bu sorguya as ile takma ad atanır.

select * from (select * from ogrenci) as o
ogrenci tablosundaki tüm kayıtları seçer. Bu durumda kullanılması mantıksız, bu sorgu sadece kullanımını ve ne anlama geldiğini görmek içindir.

Telefon +90 505 747 42 84
Email info@devedijital.com
Adres
Tacettin Veli Mahallesi Halit Narin Caddesi Bahadır Plaza Kat:11 Daire:41 38230 Deve Dijital Melikgazi/Kayseri/Türkiye