KARMAŞIK SORGULAR.

Slides:



Advertisements
Benzer bir sunumlar
VTYS Öğr. Gör. Engin DUTAR
Advertisements

Verileri gruplayarak analiz
KARMAŞIK SORGULAR.
SQL (Structured Query Language)
SQL (Structured Query Language)
SQL FONKSİYONLARI.
SQL Structured Query Language (Yapısal sorgulama dili)
En ucuzundan en pahalısına doğru sıralanmış olarak “Cep Telefonları” kategorisindeki tüm ürünlerin isimleri “Spor” kategorisinde ürünleri listelenen “İstanbul”
Karmaşık (İç içe) SELECT Sorguları
SQL KOMUTLARI.
SQL Komutlar 2 Sibel SOMYÜREK.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
Veri Tabanı I.
SQL Komutlar 4 Fahri YILMAZ.
Alt Sorgular Veritabanı 2.
5 Sorgulama İşlemleri Veritabanı 1.
Veri Tabanı Yönetim Sistemleri
Tek Tablo İçinde Sorgulamalar
SQL Sorgu Örnekleri.
Fonksiyonlar Hafta 4.
Operatörler.
T-SQL-2.Konu Akış Kontrolleri.
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
BÖLÜM 6 SQL SERVER KOMUTLARI.
10 Gruplandırarak Sorgulama
SQL (STRUCTURED QUERY LANGUAGE)
VTYS Öğr. Gör. Engin DUTAR
Departman ve Personel Tablosu Soruları
MYSQL 4. HAFTA. mySQL veri türleri INTTamsayı: 'den kadar değişen diziye "signed" (işaretli), 0'dan 'e kadar değişenine.
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
SQL Komutlar 3 Sibel SOMYÜREK.
Formüller Mustafa AÇIKKAR.
VERİTABANI ve YÖNETİMİ
SQL’e Giriş ve SELECT Komutu
ÇOKLU TABLOLAR.
MySQL Operatörleri ve Fonksiyonları
SQL SERVER 2008 Yücel YILDIRIM.
VeriTabanı Uygulama.
Veri Tabanı Yönetim Sistemleri 1 Ders 6 Çok Tablolu Sorgular
Veri Tabanı Yönetim Sistemleri 1 Ders 5 SQL'e Giriş
Veritabanı Yönetim Sistemleri-I
SQL Komutları (2) Uzm. Murat YAZICI.
Okul Yönetiminde Bilgisayar Uygulamaları
VTYS Öğr. Gör. Engin DUTAR
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name aggregate : birleştirme fonksiyonları.
SQL’ e Giriş Uzm. Murat YAZICI.
VERİTABANI YÖNETİM SİSTEMLERİ 1
Veritabanı Kavramları
VERİTABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü.
Yapısal Sorgulama Dili SQL Hafta 7. TEKRARLI SATIRLARI ÖNLEMEK  DISTINCT komutu ile sorgu sonucunda birden fazla kayıt aynı verileri içeriyorsa tekrarlı.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
GROUP BY HAVING ORDER BY İbrahim Onur Sığırcı. Ö RNEK 1 – G RUP F ONKSIYONLARı * «Sales» departmanında kaç kişinin çalıştığını, toplam maaşlarını, en.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
Veri Tabanı Yönetimi Dersi 5
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
SQL GROUP BY HAVING.
GROUP BY HAVING ORDER BY LIMIT
SQL (STRUCTURED QUERY LANGUAGE)
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
Intersect Tablo1 Sno Ad Soyad 1 Ali Ak 2 Veli Kara 3 Can Mor Tablo2
Sunum transkripti:

KARMAŞIK SORGULAR

Alt sorgu kavramı Karmaşık sorgular, bir sorgu içinde birden fazla SELECT deyiminin kullanılması ile elde edilir. Karmaşık sorgularda, ana sorgu bir başka alt sorgudan elde edilen sonuçları kullanır. Uygulamada, bir sorgudan elde edilen sonuç, diğer bir sorguyu ilgilendirebilir. Bu gibi durumlarda alt sorgular (iç sorgular) kullanılır.

Alt sorgu kavramı Örnek: “Hangi personelin ücreti “HALİT” isimli personelin ücretinden daha fazladır?” bu problemi iki farklı sorguya ayırmak mümkündür. Sorgu1. “HALİT” isimli personelin aylık ücreti nedir? Sorgu2. Hangi personelin ücreti “HALİT” isimli personelin ücretinden daha fazladır?

Alt sorgunun tanımlanması Sorgu biçimi: SELECT liste FROM tablo WHERE ifade işleç (SELECT liste FROM tablo) Tanımda görüldüğü gibi, iki SELECT deyimi ile bir farklı sorgu tanımlanmıştır. Bu iki sorgu birbirine WHERE koşul sözcüğü içinde bağlanmıştır. Bir alt sorgu WHERE, HAVING, FROM sözcükleri içinde kullanılabilir.

Alt sorgu kavramı Örnek: Personel numarası “110” olan personelin ücretinden daha fazla ücret alan personel isimlerini listelemek için: SELECT ADI, ÜCRET FROM PERSONEL WHERE ÜCRET > (SELECT ÜCRET FROM PERSONEL WHERE PERSONEL_NO=110);

Alt sorgu düzenleme kuralları Alt sorgu, ana sorgu içindeki karşılaştırma işlecinin sağında yer almalıdır. FROM sözcüğü içinde tanımlanan sorgular bu kuralın dışındadır. Bir alt sorgu parantez işaretleri içinde yer almalıdır. Alt sorgu ORDER BY sözcüğü içeremez. Bu sorgu sadece ana sorgu içinde yer alabilir. Alt sorgularda iki tür karşılaştırma işleci bulunabilir: a) Tek satır işleçleri b) Çoklu satır işleçleri

Tek satır alt sorguları Sadece bir değer döndüren alt sorgulardır. İç taraftaki SELECT deyiminden sadece tek bir değer elde edilir. İşleç Anlamı = eşit > büyük >= büyük veya eşit < küçük <= küçük veya eşit <> eşit değil

Tek satır alt sorguları Örnek: Personel numarası “155” olan personelle aynı göreve sahip olan ve “300” numaralı personelin ücretinden daha fazla ücret alan personeli listelemek istiyoruz. SELECT ADI, GÖREVİ, ÜCRET FROM PERSONEL WHERE GÖREVİ= (SELECT GÖREVİ WHERE PERSONEL_NO=155) AND ÜCRET> (SELECT ÜCRET WHERE PERSONEL_NO=3000);

Grup fonksiyonlarının kullanımı Grup fonksiyonları sadece bir değer döndürdüğü için, bu tür fonksiyonlar tek satır alt sorgularında kullanılabilir. Örnek: Personel arasında ortalama ücretten daha fazla ücret alanları listelemek için: SELECT ADI, ÜCRET FROM PERSONEL WHERE ÜCRET > (SELECT AVG(ÜCRET) FROM PERSONEL);

Havıng ile grup koşullarının tanımlanması Ana sorgu grup fonksiyonu içeriyorsa, doğal olarak grup koşullarının tanımlanması gerekebilecektir. Yani HAVING sözcüğü de kullanılacaktır. Örnek: En fazla ücret alan personelinin ücreti, “30” numaralı bölümün ortalama ücretinden daha fazla olan bölümleri öğrenmek için: SELECT BÖLÜM_NO, MAX(ÜCRET) AS “EN YÜKSEK ÜCRET” FROM PERSONEL GROUP BY BÖLÜM_NO HAVING MAX(ÜCRET) > (SELECT AVG(ÜCRET) WHERE BÖLÜM_NO=30);

Çoklu satır alt sorgusu Alt sorgudan bir satır yerine, daha fazla sayıda satır elde ediliyorsa, bu kez sorgu bir çoklu alt sorgusu olarak değerlendirilir. İşleç Anlamı IN liste içindeki değerlerden seçme işlemini gerçekleştirir. ANY alt sorgu tarafından döndürülen her bir değer için karşılaştırma işlemini gerçekleştirir. ALL alt sorgu tarafından döndürülen tüm değerlerle karşılaştırma işlemini gerçekleştirir.

IN İŞLECİ Bir liste içindeki değerlerden birini seçmek için IN işlecini kullanıyorduk. Örnek: Her bölümdeki en az ücretleri belirleyerek, bunlarla aynı ücreti alan personeli görüntülemek için: SELECT ADI, ÜCRET, BÖLÜM_NO FROM PERSONEL WHERE ÜCRET IN( SELECT MIN(UCRET) GROUP BY BÖLÜM_NO);

ANY İŞLECİ Alt sorgu tarafından üretilen her bir değeri ana sorgu içinde belirlenen bir değer ile karşılaştırmak söz konusu ise ANY işleci kullanılır. Bu işleç “=,<,>” işleçlerinden biri ile birlikte kullanılır. “=ANY” biçimindeki bir tanım IN tanımı ile eşdeğerdir. “<ANY” ifadesi en çoktan daha az “>ANY” ifadesi en azdan daha büyük anlamında değerlendirilir.

ANY İŞLECİ Örnek: En fazla kazanan MEMUR dan daha az maaşı olan personeli listelemek için: SELECT ADI, ÜCRET, GÖREVİ FROM PERSONEL WHERE ÜCRET <ANY ( SELECT ÜCRET WHERE GÖREVİ=‘MEMUR’);

ALL İŞLECİ Alt sorgu tarafından üretilen tüm değerlerin, ana sorgu için bir girdi olarak kullanılması söz konusu ise ALL işleci kullanılabilir. “>ALL” ifadesi en büyükten daha büyük “<ALL” ifadesi en küçükten daha küçük olanları ifade eder.

ALL İŞLECİ Örnek: Ücreti tüm bölümlerin ortalama ücretinden daha büyük olan personeli listelemek için: SELECT ADI, ÜCRET FROM PERSONEL WHERE ÜCRET >ALL ( SELECT AVG(ÜCRET) GROUP BY BÖLÜM_NO);

Çok sütunlu alt sorgular Bazı uygulamalarda alt sorgunun birden fazla sütun üretmesi ve koşul içinde bu değerlerin kullanılması söz konusu olabilir. Örnek: SEZİN isimli personelin görevi ve ücretiyle aynı olan personeli listelemek için: SELECT BÖLÜM_NO, ADI, ÜCRET FROM PERSONEL WHERE (GÖREVİ,ÜCRET) IN (SELECT GÖREVİ, ÜCRET WHERE ADI=‘SEZİN’);

From sözcüğü içinde alt sorgu tanımlama Normal olarak bir SELECT deyiminde kullanılabilecek tablolar, yani veri kaynağı FROM sözcüğü içinde tanımlanır. Ancak gerektiğinde bir alt sorgunun sonuçları da tıpkı bir tablo gibi değerlendirilerek, FROM içinde bu sorgu yer alabilir. Örnek: Bir bölümün ortalama ücretinden daha fazla ücret alan tüm personelin ortalama ücretlerini listelemek için: SELECT P.BÖLÜM_NO, P.ADI, P.ÜCRET, S.MAAŞ FROM PERSONEL P, (SELECT BÖLÜM_NO,AVG(ÜCRET) AS MAAŞ) FROM PERSONEL GROUP BY BÖLÜM_NO S WHERE P.BÖLÜM_NO=S.BÖLÜM_NO AND P.ÜCRET>S.MAAŞ;