Ana içeriğe geç
Kesit SQL
Temel · Özetleme

Bir sorgu hangi sırayla çalışır?

Yazım sırası ile mantıksal çalışma sırası neden farklı?

Uygulamada aç, 8 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Yazdığın sıra ≠ çalışan sıra

Sorguyu SELECT ile başlayarak yazarız ama veritabanı onu mantıksal olarak şu sırayla işler:

  1. FROM (ve JOIN'ler): Hangi tablolar?
  2. WHERE: Satırları süz.
  3. GROUP BY: Grupla.
  4. HAVING: Grupları süz.
  5. SELECT: Sütunları ve ifadeleri hesapla (pencere fonksiyonları burada).
  6. DISTINCT: Tekrarları at.
  7. ORDER BY: Sırala.
  8. LIMIT / OFFSET: Kes.

Bu neden önemli?

SELECT category, AVG(price) AS ort
FROM products
WHERE price > 100          -- 2. adım
GROUP BY category          -- 3. adım
HAVING AVG(price) > 500    -- 4. adım
ORDER BY ort DESC          -- 7. adım: takma ad burada geçerli
LIMIT 3;                   -- 8. adım

Derinleş: mantıksal sıra bir örnekte

Aşağıdaki sorgunun veritabanında nasıl işlendiğini satır satır izle:

SELECT r.cuisine, COUNT(*) AS siparis          -- 5: sütunlar
FROM lk_orders o                                -- 1: tablolar
JOIN lk_restaurants r ON r.restaurant_id = o.restaurant_id
WHERE o.status = 'teslim'                       -- 2: satır süzme
GROUP BY r.cuisine                              -- 3: gruplama
HAVING COUNT(*) > 300                           -- 4: grup süzme
ORDER BY siparis DESC                           -- 6: sıralama
LIMIT 3;                                        -- 7: kesme

Bu sırayı bilmek, “takma adı neden WHERE'de kullanamıyorum?” ve “pencere fonksiyonu neden WHERE'de olmaz?” sorularının cevabıdır.

Alıştırmalara geç (8)