Sql Komutları
Sql komutlarından DISTINCT, IN, NOT IN, IN(SELECT...), ANY, ALL, EXISTS, NOT EXISTS, UNION, EXCEPT, BETWEEN kullanımı
DISTINCT
Veritabanımızda oluşturduğumuz tablonun içinde birbirinin aynı veriler bulunabilir.
Bu verilerden aynı olanların listeleme esnasında bir kez yazılması için Distinct sözcüğü kullanılır
Örnek:
12 ATB sınıfında adı Burak olan öğrencilerden sıralamada ilk gelen gösterilir.
SELECT DISTINCT ad
FROM 12atb;
komutunu kullanınca aşağıdaki ekran gelir.
IN
“IN” İngilizce'de de olduğu gibi içinde anlamına gelmektedir.
Veri tabanımızda sahip olduğumuz verilerden sadece istediklerimize IN sözcüğüyle ulaşabiliriz.
ÖRNEK:
12 ATB sınıfında numarası 13,20,24 olan öğrenciler kimdir?
SELECT *
FROM 12atb
WHERE no IN (13, 20, 24);
Ekran görüntüsü
NOT IN
NOT IN, IN deyiminin tam tersidir. Veri tabanımızda sahip olduğumuz verilerden istemediklerimizi NOT IN sözcüğüyle belirtiriz.
ÖRNEK:
12 ATB sınıfında numarası 13,20,24 olmayan öğrenciler kimdir?
SELECT *
FROM 12atb
WHERE no NOT IN (13, 20, 24);
Ekran görüntüsü
BETWEEN
İngilizde'de de olduğu gibi arasında anlamına gelir Veri tabanımızda belirttiğimiz aralıklarla ilişki kurulmasını sağlar.
ÖRNEK:
12ATB sınıfında numarası 10 ile 25 arasında olan öğrencilerin soyadları?
SELECT *
FROM 12atb
WHERE no BETWEEN 10
AND 25;
Ekran görüntüsü
IN(SELECT...)
IN SELECT komutunda içteki Select komutunun bulduğu sonuca IN komutunu uygulamamız için kullanılır.
ÖRNEK:
Kadıköyde’te oturan öğrencinin çalıştığı projelerin adlarını ve yerlerini listeleme.
SELECT proj_ad,yer
FROM proje
WHERE proj_no IN
(SELECT proje_no
FROM ogrenci,çalışma
WHERE sosy_g_no = per_s_g_no
AND adres LIKE '%kadiköy%');
ANY
İngilizce'de de herhangi biri anlamına gelen any komutu sql komutumuzda da herhangi biri anlamını taşır.
ÖRNEK:
Makine bölümünde çalışan ogrencinin her hangi birinden daha düşük not alan ve elektronik bölümündeki bulunan ogrencileri listele.
Bu örnekte; makine bölümü kodu = 2 ve elektronik bölümü kodu = 1 alınmıştır.
SELECT * FROM ogrenci
WHERE NOT < ANY
(SELECT NOT FROM ogrenci
WHERE böl_no = 2) AND böl_no =1;
Ekran görüntüsü
ALL
İngilizce'de de hepsi anlamına gelen ALL komutu sql komutumuzda da hepsi anlamını taşır.
ÖRNEK:
Elektronik bölümünde çalışan ve makine bölümündeki ogrencilerin hepsinden daha fazla not alan ogrencileri listele.
Bu örnekte Makine bölümü kodu = 2 ve Elektronik bölümü kodu = 1 alınmıştır.
SELECT * FROM ogrenci
WHERE NOT >
ALL (SELECT NOT
FROM ogrenci
WHERE bolum_no = 1)
AND bolum_no = 2;
Ekran görüntüsü
EXISTS
Mevcut anlamına gelir. AND,OR,NOT operatörleri ile kullanılabilir.
ÖRNEK:
Mandalina satan pazarcılarla ilişkili tüm bilgileri listele.
SELECT *
FROM pazarci
WHERE EXISTS
(SELECT *
FROM mey_sat
WHERE sat_no = pazarci_n
AND meyve =mandalina);
NOT EXISTS
Mevcut değil anlamına gelir. AND,OR,NOT operatörleri ile kullanılabilir.
ÖRNEK:
Mandalina satmayan pazarcılarla ilişkili tüm bilgileri listele.
SELECT *
FROM pazarci
WHERE NOT EXISTS
(SELECT *
FROM mey_sat
WHERE sat_no = pazarci_n
AND meyve =mandalina);
UNION
İki ayrı SELECT komutunun sonucunda elde edilen tabloların birleşimi işlemini gerçekleştirir.
ÖRNEK:
Adı Sadullah ve Soyadı Abdurrahman olan kişi yada kişileri işletmenin yürüttüğü projelerde çalışan bir kişi (sıradan bir personel yada bölüm yöneticisi)olarak bulunduran projelerin isimlerini ve projelerin yürütüldüğü yerleri listele.
(SELECT proj_ad,yer
FROM proj,bölüm,personel
WHERE bl_no=bölüm_no AND
y_sos gno = sosy_g_no
AND ad ='Sadullah'
AND
soyad ='Abdurrahman')
UNION (SELECT proj_ad,yer
FROM proje,çalışma,personel
WHERE proj_no = proje_no AND
Per_s_g_no = sosy_g_no AND ad ='Sadullah'
AND soyad ='Abdurrahman')
KOŞULLAR:
UNION ile birden fazla SELECT ’in sonucu olan tabloların küme birleşimi işlemine tabi tutulması için 2 koşul gereklidir.
1) SELECT komutları sonucunda elde edilecek tablolar aynı sayıda kolon içermelidirler.
2)Sonuç tabloları karşılıklı olarak kolonların aynı veri tipi ve aynı genişlikte olmalıdır.
EXCEPT
Birden fazla tabloda birinde olup diğerinde olmayan şeklindeki bağıntıları kurmamız için kullandığımız komuttur..
ÖRNEK:
Metal bölümündeki ogrenci adlarından,tesviye bölümünde bulunmayanları listele.
SELECT * FROM
(SELECT ad FROM ogrenci
WHERE bol_no=1
EXCEPT
SELECT ad FROM ogrenci
WHERE bol_no =2);
Ekran görüntüsü