Veritabanından Veri Okuma

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;
  1. Tarihler #.....# karakterleri arasına yazılır.
  2. Tarih formatı aa/gg/yyyy formatına uygun yazılır.
  3. 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;
  1. Bir sorgu içerisindeki alanlardaki değerler matematik işlemlerine tabi tutulabilir.
  2. 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;

Hadi durma sende yorum yap

Daha yeni Daha eski

Comments