Veritabanı Yönetim Sistemleri İleri SQL
Konular Ürün Sipariş Sistemi DML İle Alt Sorgu Kullanımı Where İle Alt Sorgu (Tek Değer Döndüren) Kullanımı Where İle Alt Sorgu (Çok Değer Döndüren) Kullanımı Having İle Alt Sorgu Kullanımı From İle Alt Sorgu Kullanımı Inline Alt Sorgu Kullanımı İlintili (Correlated) Alt Sorgu Kullanımı 2
Kalıtım 3
Kalıtım 4
VIEW SELECT işlemi (genellikle karmaşık olanlar) için kısa yol tanımlamak için kullanılır. Dinamiktir. View ile oluşturulan tablo her çalıştığında view ı oluşturan ifadeler yeniden çalıştırılır. Karmaşık sorguları basit hale getirir. Güvenlik nedeniyle kullanılabilir. (Şirket personeli müşterilerin genel bilgileri (ad, soyad, adres v.b.) görebilsin, kredi kartını bilgilerine erişemesin ) DROP VIEW view_name 5
Özyineli Birleştirme (Recursive Join) 6
Ürün Sipariş Sistemi 7
Ürün Sipariş Sistemi - NorthWind 8
Where İle Alt Sorgu (Tek Değer Döndüren) Kullanımı Tek olarak =,<,> v.s. gibi ifadeler kullanılıyor ise alt sorgular sonucunda tek alan ve tek satır dönmeli tipi uygun olmalı. Aksi halde hata verir. ve Gruplama işleminden geriye tek değer döndürüldüğü için alt sorgu içerisinde gruplama fonksiyonu kullanılabilir. Alt sorgudaki koşul içerisinde birincil anahtar kullanılarak alt sorgudan tek değer döndürülmesi garanti edilebilir. 9
Where İle Alt Sorgu (Tek Değer Döndüren) Kullanımı 10
Where İle Alt Sorgu (Çok Değer Döndüren) Kullanımı Alt sorgudan çok değer dönmesi durumunda IN, ANY ve ALL ifadeleri kullanılmalıdır. 11
Where İle Alt Sorgu (Çok Değer Döndüren) Kullanımı Alt sorgudan çok değer dönmesi durumunda IN, ANY ve ALL ifadeleri kullanılmalıdır. 12
13
14
15
16
ALL 17
ALL 18
Inline Alt Sorgu Kullanımı Alt sorgular sonucunda tek alan ve tek satır dönmeli. Aksi halde hata verir. DIFF hesaplanırken AVGPRICE kısa adı kullanılmamalı. 19
Ilintili (Correlated) Alt Sorgu Kullanımı İç içe döngülerdeki gibi dış sorgunun her bir satırı iç sorguya gönderilerek iç sorgunun çalıştırılması sağlanır. Aşağıdaki örnekte; dış sorgunun her satırı için iç sorgu çalışır ve dış sorgudaki P_CODE değeri için ortalama miktarı bulur. Bu değer LINE_UNITS değerinden daha kucuk ise gosterilmek üzere sonuç kümesine (result set) eklenir. 20
EXIST OgrenciKayit tablosunda kaydı bulunan ogrencilerin listesi OgrenciKayit tablosunda kaydı bulunmayan ogrencilerin listesi Ödeme yapan müşterilerin listesi 21
UNION / UNION ALL Bu işlem, iki tablonun küme birleşimini alır. Rasgele 2 tablonun birleşimi alınamaz. İki tabloya birleşim işleminin uygulanabilmesi için iki tablonun nitelik sayıları aynı olmalı; aynı sıradaki nitelikleri de aynı değer alanı üzerinde tanımlanmış olmalıdır. Aynı kayıtlar bir defa listelenir (UNION ALL ile aynı kayıtların listelenmesi sağlanır) select * from payment union select * from payment_p2007_04 select * from payment union all select * from payment_p2007_04 22
INTERSECT Bu işlem iki tablonun küme kesişimi elde edilir. Birleşim işleminde olduğu gibi, rasgele 2 tablonun kesişimi alınamaz. İki tabloya kesişim işleminin uygulanabilmesi için iki tablonun nitelik sayıları aynı olmalı; aynı sıradaki nitelikleri de aynı değer alanı üzerinde tanımlanmış olmalıdır. 23
EXCEPT (MINUS-ORACLE) Bu işlem bir tablonun diğerinden farkını elde etmek için kullanılır Birleşim işleminde olduğu gibi, rastgele 2 tabloya uygulanamaz. İki tablonun nitelik sayıları aynı olmalı; aynı sıradaki nitelikleri de aynı değer alanı üzerinde tanımlanmış olmalıdır. 24
Having İle Alt Sorgu Kullanımı 25
Kaynaklar Carlos Coronel, Steven Morris, and Peter Rob, Database Systems: Design, Implementation, and Management, Cengage Learning. Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, Mc Graw Hill 26