Modül 1 · Container & Temel Altyapı · ⏱ 7 dk

SQL'in ABC'si: SELECT, WHERE, GROUP BY

SQL ABCs

Bu derste neler öğreneceksin

  • SELECT ile sütun seçer
  • WHERE ile filtreler
  • GROUP BY ile gruplar

SQL’in ABC’si: Limonatacıya Sorular Sormak

Elif’in defterinde 6 satır var. Müşteriler, içecekler, fiyatlar… Ama bir limonatacı olarak Elif’in asıl istediği bilgi. “Hangi içeceği en çok seviyorlar?”, “Bugün kim geldi?”, “25 TL’den pahalı içecekleri kim aldı?”

İşte bu soruları sormanın dili SQL (adını “si-quel” veya “es-kiu-el” diye okuyabilirsin). Bugün dört temel kelime öğreneceğiz: SELECT, WHERE, GROUP BY, ORDER BY.

Önceki derste kurduğumuz Postgres’in hâlâ çalıştığından emin ol. Eğer kapandıysa tekrar başlat:

docker run -it \
  -e POSTGRES_USER="elif" \
  -e POSTGRES_PASSWORD="limonata" \
  -e POSTGRES_DB="limonata_db" \
  -p 5432:5432 \
  postgres:18

Başka bir terminalde psql’e bağlan:

docker run -it --rm --network host postgres:18 \
  psql -h localhost -U elif -d limonata_db

SELECT: Sütunları Seç

Bütün tabloyu görmek yerine sadece istediğin sütunları isteyebilirsin. Mesela sadece isimleri görmek istersen:

SELECT isim FROM musteriler;

İstersen birden fazla sütun:

SELECT isim, icecek FROM musteriler;

SELECT * yıldız işareti “hepsi” demek. Tabloyu komple gösterir.

WHERE: Filtrele

“En pahalı içeceği kim aldı?” sorusunu sormak istiyorsun:

SELECT isim, icecek, fiyat
FROM musteriler
WHERE fiyat > 25.00;

> büyüktür demek. Eşittir =, küçüktür <, eşit değildir != veya <>. Birden fazla koşul:

SELECT isim, icecek
FROM musteriler
WHERE icecek = 'Limonata' AND fiyat < 30.00;

AND ikisi de doğru olmalı, OR biri doğru olsa yeter.

GROUP BY: Grupla

“En çok hangi içecek satılıyor?” sorusunu cevaplamak için önce içeceğe göre gruplayıp sonra sayıyız:

SELECT icecek, COUNT(*) AS adet
FROM musteriler
GROUP BY icecek;

COUNT(*) “satır sayısı” demek. AS adet ile yeni sütuna isim verdik. Sonuçta her içeceğin kaç kere satıldığını görürsün.

Toplam kazanç görmek istersen:

SELECT icecek, SUM(fiyat) AS toplam
FROM musteriler
GROUP BY icecek;

ORDER BY: Sırala

Sonuçları küçükten büyüğe veya alfabetik sıralamak:

SELECT isim, fiyat
FROM musteriler
ORDER BY fiyat DESC;

DESC büyükten küçüğe. Yazmazsan ASC yani küçükten büyüğe olur.

Hepsini Birleştir

Gerçek bir soru: “30 TL üstü içeceklerden en çok satan hangisi?”

SELECT icecek, COUNT(*) AS adet, AVG(fiyat) AS ortalama_fiyat
FROM musteriler
WHERE fiyat > 30.00
GROUP BY icecek
ORDER BY adet DESC;

Bu sorguda: filtreledik (WHERE), grupladık (GROUP BY), saydık ve ortalamasını aldık (COUNT, AVG), sıraladık (ORDER BY).

Küçük Ödev

  1. Tüm müşterilerin ismini alfabetik sırayla listele.
  2. Kaç farklı içecek satıldığını göster.
  3. En pahalı siparişi bul (MAX kullanabilirsin).

Sıradaki

Şimdi iki tabloyu birleştirmeyi öğreniyoruz →