Bu paylaşımda yazacağımız sorgu cümlelerinde aşağıdaki tabloyu kullanacağız.
SQL dilinde; bir tablodan kayıt çekmek istediğimizde kullanacağımız komut SELECT' tir.
SELECT *
FROM personel;
Yukarıdaki gibi bir sorgulamada personel tablosundaki bütün kayıtlar listelenir. Bu SELECT komutunun en basit kullanımıdır.
- Bütün personellerin sadece ad, soyad ve maaş bilgisine ihtiyacımız olduğunda;
SELECT ad, soyad, maas
FROM personel;
Bir üstteki örnekte SELECT * ifadesi ile tablodaki tüm alanları görmek istediğimizi ifade etmişken, sadece istediğimizalanları görmek için o alanarı belirtmek yeterlidir.
- Yaptığımız sorgulamada geri dönen veri kümesinde sütun başlıkları ad için A, soyad için S kullanmak istersek;
SELECT ad AS A, soyad AS S, maas
FROM personel;
- Tüm personeli listeleyelim fakat bu sefer personel ismine göre sıralı bir şekilde listeleyelim;
SELECT *
FROM personel
ORDER BY ad;
- Tüm personel bilgisini bu sefer isme göre tersten sıralayarak listeleyelim;
SELECT *
FROM personel
ORDER BY ad DESC;
- Tüm personeli isme göre tersten, soyada göre tersten ve maaşa göre düz sıralayıp listeleyelim;
SELECT ad, soyad
FROM personel
ORDER BY ad DESC, soyad DESC, maas;
SQL sorgularında sıralama kriteri olarak kullanılan alanlar, görüntülecek alanlar olmak zorunda değildir.
- Soyadı SAYGILI olan tüm personelleri listeleme;
SELECT *
FROM personel
WHERE soyad = 'SAYGILI';
SQL sorularında bütün metinsel ifadeler tırnak işareti içerisinde yazılır.
- Adı Erhan, soyadı SAYGILI olan personel bilgilerini listeleme;
SELECT *
FROM personel
WHERE ad = 'Erhan' AND soyad = 'SAYGILI';
- Adı Ali veya soyadı SAYGILI olan personel bilgilerini listeleme;
SELECT *
FROM personel
WHERE ad = 'Ali' OR soyad = 'SAYGILI';
- Adı Ali veya soyadı SAYGILI olan ve maaşı 7000 TL'den yüksek olan personel bilgilerini listeleme;
SELECT *
FROM personel
WHERE (ad = 'Ali' OR soyad = 'SAYGILI') AND maas > 7000;
Sorgu koşullarında parantez kullanımı oldukça dikkat edilmesi gerekilen bir konudur.
- Adı Ali olan veya soyadı SAYGILI olup maaşı 7000 TL'den yüksek olan personel bilgilerini listeleme;
SELECT *
FROM personel
WHERE ad = 'Ali' OR (soyad = 'SAYGILI' AND maas > 7000);
- Adı A ile başlayan personelleri listeleme;
SELECT *
FROM personel
WHERE ad LIKE 'A*';
Bazı veritabanlarında * yerine % karakteride kullanılabilir. Buna göre yazdığınız sorguyu modifiye etmelisiniz.
- Soyadı LI ile biten personelleri listeleme;
SELECT *
FROM personel
WHERE soyad LIKE '*LI';
- Soyadında I harfi olan personelleri listeleme;
SELECT *
FROM personel
WHERE soyad LIKE '*I*';
SQL sorgusunda tarih ifade etmek için dikkat edilmesi gerekilen hususlar vardır. Bunlar;
- Tarihler #.....# karakterleri arasına yazılır.
- Tarih formatı aa/gg/yyyy formatına uygun yazılır.
- Tarih alanları arasındaki ayraç olarak / karakteri kullanılır.
- Doğum tarihi 20.02.1991 olan personelleri listeleme;
SELECT *
FROM personel
WHERE dogum_tarihi = #20/02/1991#;
- Maaşı 2000 ile 5000 arasında olan personelleri maaşlarına göre listeleme;
SELECT *
FROM personel
WHERE maas >= 2000 AND maas <= 5000
ORDER BY maas;
veya
SELECT *
FROM personel
WHERE maas BETWEEN 2000 AND 5000
ORDER BY maas;
- 1991 yılında doğan personelleri listeleme;
SELECT *
FROM personel
WHERE dogum_tarihi BETWEEN #01/01/1991# AND #12/31/1991#;
- 12.31.2020 tarihinde personellerin kaç yaşında olacağını ad,soyad bilgileri ile birlikte listeleme;
SELECT * ad, soyad, #12/31/2020# - dogum_tarihi AS gunfarki
FROM personel;
Yukarıdaki örnekte yer alan 2 önemli husus;
- Bir sorgu içerisindeki alanlardaki değerler matematik işlemlerine tabi tutulabilir.
- Tarih alanları matematik işlemlerine tabi tutulabilir.
- ismi Erhan, Ali veya Kürşat olan personelleri listeleme;
SELECT *
FROM personel
WHERE ad IN ('Erhan', 'Ali', 'Kürşat');
- Toplam personel sayısını bulma;
SELECT count(*) AS toplam
FROM personel;
- Her departmanda toplam çalışan sayısını bulma (departmana göre gruplandırma);
SELECT departman_id, count(*) AS toplam
FROM personel
GROUP BY departman_id;
- Bu ay personellere toplam ne kadar maaş verileceğini bulma;
SELECT SUM(maas) AS toplam
FROM personel;
- İsmi Ali olan personellere toplam ne kadar maaş verildiğini bulma;
SELECT SUM(maas) AS toplam
FROM personel
WHERE ad = 'Ali';
- Bilgi İşlem departmanına bu ay ne kadar maaş ödemesi yapılacağını bulma;
SELECT id
FROM departman
WHERE ad = 'Bilgi İşlem';
Bu sorgu ile Bilgi İşlem departmanının ID bilgisini 1 olarak öğrenmiş olacağız.
SELECT SUM(maas) AS toplam
FROM personel
WHERE departman_id = 1;
- Her bir departmana bu ay toplam ne kadar ödeme yapılacağını bulma;
SELECT departman_id, SUM(maas) AS toplam
FROM personel
GROUP BY departman_id;
- Her bir departmana bu ay ortalama ne kadar ödeme yapılacağını bulma;
SELECT departman_id, AVG(maas) AS ortalama
FROM personel
GROUP BY departman_id;
- Her bir departmana bu ay ortalama ne kadar ödeme yapılacağını yuvarlayarak bulma;
SELECT departman_id, ROUND(AVG(maas)) AS ortalama
FROM personel
GROUP BY departman_id;
Yorum Gönder