SQL üzerinde temel sorguları çalıştırmak adına çeşitli örnekleri not almıştım. Bunlar bir çok basit ve gelişmiş sorguları çalıştırmanıza yardımcı olan örneklerdir. Şöyle ki, bir diyagram var. Diyagrama göre de sorulmuş 7 adet soru var. Bu sorular diyagrama bakılarak yapılmıştır.
Bu konuda kendinizi geliştirebilmeniz adına karşınıza çıkabilecek gündelik hayattan güzel örneklerdir.
Örnek-1:
Maaşı 2000 TL’den büyük, 01.01.1970 tarihinden sonra doğmuş ve Türk olan personelin adı, soyadı, departmanı ve ülke id’lerini ekranda gösteren sorguyu yazınız.
Cevap-1:
SELECT
personel.ad as ‘Personel Adı’,
personel.soyad,
departman.ad as ‘Departman Adı’,
ulke.id as ‘Ülke ID’
FROM
personel, departman, ulke
WHERE
personel.maas>2000 AND
personel.dogum>’01/01/1970’ AND
ulke.ad=’Türkiye’ AND
departman.id=personel.departman_id AND
personel.ulke_id=ulke.id
Örnek-2:
Işyerleri Ankara’da olan müşterilerin adı-soyadı, çalıştıkları firma adları ve o müşterilerin toplam verdiği sipariş sayılarını listeleyecek sorguyu oluşturunuz.
Cevap-2:
SELECT
musteri.ad, musteri.soyad, firma.ad, COUNT (siparis_baslik.id) AS ‘Toplam Sipariş’,
FROM
musteri, firma, sipariş_baslik
WHERE
firma.adres=’Ankara’
AND
firma.id=musteri.firma_Id,
AND
siparis_baslik.musteri_id=musteri.id
GROUP BY
musteri.ad,
musteri.soyad,
firma.ad
Örnek-3:
Pazarlama departmanında çalışan ve ismi A harfi ile başlayan personellerin ad, soyad ve departman adlarını ekrana yazdıran sorgu nedir?
Cevap-3:
SELECT
departman.ad, personel.ad, personel.soyad
FROM
departman, personel
WHERE
personel.ad LIKE ’A%’
AND
departman.ad=’Pazarlama’,
AND
personel.departman_id=departman.id
Örnek-4:
Türk müşterilerin toplam kaç adet sipariş verdiklerini bulmak istiyoruz. Ekran çıktısında ülke adı ve toplam verilen sipariş sayısı olacak şekilde sorguyu oluşturunuz.
Cevap-4:
SELECT
ulke.ad,
COUNT(siparis_kalem.adet) AS ‘Toplam Sipariş’,
FROM
ulke, musteri, siparis_kalem, siparis_baslik,
WHERE
ulke_ad=’Türkiye’ AND
ulke.id=musteri.ulke_id AND
musteri.id=sipariş_baslik.musteri_id AND
siparis_baslik.id=siparis_kalem.siparis_id
GROUP BY
ulke.ad
Örnek-5:
Fiyatı 1000 TL’den küçük olan ürünlerden sipariş eden müşterilerin adı ve soyadını, ayrıca ürünün adını, fiyatını müşterinin soyadına göre sıralayarak gidin.
Cevap-5:
SELECT
musteri.ad, musteri.soyadi, urun.ad, urun_fiyat.fiyat,
FROM
musteri, urun, urun_fiyat, siparis_baslik, siparis_kalem,
WHERE
urun_fiyat.fiyat<1000 AND
musteri.id=siparis_baslik.id AND
siparis_baslik.id=siparis_kalem.siparis_id AND
siparis_kalem.urun_id=urun.id AND
urun.id=urun_fiyat.urun_id
ORDER BY musteri.soyad
Örnek-6:
Fiyatı 800-2000 TL arasında olan ürünlerden sipariş eden müşterilerden Alman vatandaşı olanların adını, soyadını, ayrıca sipariş edilen ürünün adını ve ücretini müşterinin adına göre sıralı getiriniz.
Cevap-6:
SELECT
urun_fiyat.fiyat, musteri.ad, musteri.soyad, musteri.ulke_id, urun.ad
FROM
urun, musteri, urun_fiyat, siparis_baslik, siparis_kalem, ulke
Where urun_fiyat.fiyat BETWEEN 800 AND 2000
AND
musteri.ulke_id=’Almanya’
AND
musteri.id=siparis_baslik.musteri_id AND
siparis_baslik.id=siparis_kalem.siparis_id AND
siparis_kalem.urun_id AND
urun.id=urun_fiyat.id
ORDER BY musteri.ad
Örnek-7:
Müşterilerden, 35 yaşından küçük olanları çalıştığı firmaların adresleriyle bu müşterilerin ad ve soyadlarını, müşteri soyadına göre tersten sıralayarak sorgulattırınız.
Cevap-7:
Select musteri.ad, musteri.soyad, firma.ad, firma.adres
FROM
musteri, firma
WHERE musteri.dogum>’01/01/1978’ AND
musteri.firma_id=firma.id
ORDER BY musteri.soyad DESC
Bu 7 örnek içerisinde sorgular farklı da yazılabilirdi. En basit örnekle, örnek-6’da fiyat koşulunun yazıldığı yere dikkatinizi çekerim. “Fiyatı 800-2000 TL arasında…” diyor. Ben bunu, “Where urun_fiyat.fiyat BETWEEN 800 AND 2000” diye yazmışım. Bu başka şekilde de yazılamaz mı? Tabi ki yazılabilir. Ürün fiyatları urun_fiyat tablosundaki fiyat sütununda tutuluyor.
O halde koşulumu 3 farklı şekilde yazabilirim.
1- WHERE urun_fiyat.fiyat BETWEEN 800 AND 2000
2- WHERE urun_fiyat.fiyat>800 AND urun_fiyat.fiyat<2000
3- WHERE urun_fiyat.fiyat MAX(urun_fiyat.fiyat=800) AND MIN(urun_fiyat.fiyat=2000)”
Bu 3 sorgu da aynı şeyi ifade ediyor.
Konulardaki gelişmiş kavramları öğrenince kısayoldan nasıl gidildiğini de bulabiliyoruz. Daha farklı soru örnekleri sonradan yayınlayacağım.
Yorum bırakın