SQL Structured Query Language (Yapısal sorgulama dili) SQL, veritabanlarından bilgi çekebilmek için kullanılan dil
Select Sorgusu SELECT [ALL | DISTINCT] sütun1[,sütun2] FROM tablo1[,tablo2] [WHERE “koşullar"] [GROUP BY “sütun-listesi"] [HAVING “koşullar”] [ORDER BY “sütun-listesi" [ASC | DESC] ]
Where Cümleciği Örnek: SELECT isim, yaş, maaş FROM çalışan WHERE yaş > 50; Yukarıdaki örnekte yaşı 50den büyük olan bütün çalışanların isim, yaş ve maaş özellikleri listelenmektedir.
Karşılaştırma Operatörleri = Eşittir >Büyüktür <Küçüktür >=Büyük yada eşittir <=Küçük yada eşittir <>Büyük yada eşit değildir LIKE Metin karşılaştırma testleri
Like Örnek:SELECT isim, ünvan, dept FROM çalışan WHERE ünvan LIKE ‘prof%'; Yukarıdaki örnek çalışan tablosundan ünvanı prof ile başlayanların isim ,unvan ve departman özelliklerini listeler.
All ve Distinct Belirtilen sütunlarda tekrar eden değerler varsa bu satırlardan yalnızca bir tanesini getirmek için DISTINCT kullanılır.Tekrar ederek gelmesi içinse ALL kullanılır. Örnek:SELECT DISTINCT yaş FROM çalışan; Yukarıda aynı yaşlarda çalışanların yaşlarından yalnızca bir tanesi gelir. Eğer distinct kullanılmazsa all kullanılmış sayılır ve tekrar eden kayıtlarda getirilir.
Toplam Fonksiyonları MIN bir sütundaki değerlerden en küçük değeri döndürür. MAX bir sütundaki değerlerden en büyük değeri döndürür. SUM bir sütundaki değerlerin toplamını döndürür. AVG bir sütundaki değerlerin averajını alır. COUNT bir sütundaki değerlerin kaç tane olduğunu döndürür. COUNT(*) bir tablodaki kayıt sayısını döndürür.
Toplam Fonksiyonları Örnek: SELECT AVG(maaş) FROM çalışan; Yukarıdaki örnekte çalışan tablosundaki çalışanların maaşlarının ortalaması listelenir. Geriye tek bir değer döndürür. Örnek:SELECT AVG(maaş) FROM çalışan; WHERE ünvan = 'Programcı'; Yukarıdaki örnekte çalışan tablosundaki ünvanları ‘Programcı’ olanların maaşlarının ortalamaları alınır. Select count(*) from çalışan; Yukarıda tabloda kaç tane çalışan kaydı olduğunu döndürür.
GROUP BY Cümleciği SELECT sütun1, SUM(sütun2) FROM “tablo-ismi-listesi" GROUP BY “sütun-listesi"; Örnek: Her departmandaki en yüksek maaşları hesaplamak için: SELECT max(maaş), dept FROM çalışan GROUP BY dept;
Having Cümleciği Group by cümleciğinden sonra gelir. Grouplanan değerler arasından koşula bağlı seçim yapar. Örnek:SELECT dept, avg(maaş) FROM çalışan GROUP BY dept HAVING avg(maaş) > 20000; Departmanların ortalama maaşları 20000’in üzerinde olanları seçer.
Order By Cümleciği Belli bir sütuna göre artan yada azalan sıralama yapmaya yarar. Asc : artan sıralama Desc: azalan sıralama SELECT çalışanid, dept, isim, yaş, maaş FROM çalışan WHERE dept = ‘satış' ORDER BY maaş;
AND ve OR Örnek: SELECT id, isim, soyisim, ünvan, maaş FROM çalışan WHERE (maaş >= 50000.00) AND (ünvan = 'Programmer'); SELECT isim, soyisim, ünvan, maaş FROM çalışan WHERE (ünvan = 'Satıcı') OR (ünvan = 'Programcı');
In ve Between SELECT sütun1, SUM(sütun2) FROM “tablolistesi" WHERE sütun3 IN (değer-listesi); Sorgu , sütun3 ün değerinin değer listesi içerisindeki değerlerden birine eşit olduğu satırları getirir. Ör:SELECT çalışanid, soyisim, maas FROM çalışan WHERE soyisim IN (‘çetin', ‘taşdelen', 'Roberts', ‘erdoğan');
In ve Between SELECT sütun1, SUM(sütun2) FROM “tablo-listesi" WHERE sütun3 BETWEEN değer1 AND değer2; Sorgu sütun3’ün değerinin değer1 ve değer2nin aralığında olduğu satırları getirir. Ör: SELECT çalışanid, yaş, soyisim, maaş FROM çalışan WHERE yaş BETWEEN 30 AND 40;
JOIN Birden fazla ilişkili tablodan verilerin birleştirilerek tek bir Select sorgusuyla getirilmesini sağlar. From kelimesinden sonra birden fazla tablo adı virgülle ayrılır. SELECT “sütun listesi" FROM tablo1,tablo2 WHERE “koşullar"
JOIN Örnek: Müşteri(müşteriid,isim,soyisim,adres,şehir,zip) Sipariş(müşteriid,tarih,malzeme,fiyat) SELECT müşteri.isim, müşteri.soyisim, sipariş.malzeme FROM müşteri, sipariş WHERE müşteri.müşteriid =sipariş.müşteriid; SELECT müşteri.isim, müşteri.soyisim, sipariş.malzeme FROM müşteri INNER JOIN sipariş ON müşteri.müşteriid =sipariş.müşteriid;