0Pricing
SQL Interview Prep · Ders

Mantıksal Sorgu Yürütme Sırası

FROM'un SELECT'ten önce çalışmasının nedenini ve gerçek yürütme sırasını bilmenin pek çok şaşırtmalı soruyu nasıl yanıtladığını öğrenin.

Mantıksal Sorgu Yürütme Sırası, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Bir Düzine Başka Sorunun Kapısını Açan Soru

Mülakatçılar "Bir sorgu gerçekte hangi sırayla çalışır?" diye sorar; çünkü bu, SELECT takma adının WHERE içinde neden çalışmadığını, WHERE ifadesinin neden bir toplama sonucunu filtreleyemediğini ve daha birçok noktayı açıklar.

Yazım Sırası ve Mantıksal Sıra

Bir sorguyu SELECT ile başlayarak yazarsınız, ancak motor sorguyu FROM ile başlayarak çalıştırır. SELECT'in neredeyse en son değerlendirilmesiyle birlikte bu uyumsuzluk, kafa karışıklıklarının çoğuna yol açar.

Tam Mantıksal Sıra

Tam mantıksal sıra şöyledir: FROM, ardından WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY ve son olarak LIMIT. Aşağıdaki tüm şaşırtıcı durumlar doğrudan bu listeden kaynaklanır.

FROM Neden İlk Çalışır

FROM ilk çalışır; çünkü motorun başka herhangi bir işlemden önce üzerinde çalışacağı satırlara ihtiyacı vardır. Önce kaynak satırları oluşturur, ancak bundan sonra WHERE hangilerinin tutulacağına karar verebilir.

SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE e.salary > 50000;

Tuzak: Takma Ad WHERE İçinde Kullanılamaz

En sık sorulan sonuç şudur: SELECT takma adı WHERE içinde kullanılamaz; çünkü WHERE, SELECT'ten önce çalışır. Aşağıdaki kod hatayı ve çözümü gösterir: ifadeyi tekrarlayın.

-- FAILS: alias 'annual' unknown in WHERE
SELECT salary * 12 AS annual
FROM employees
WHERE annual > 600000;

-- FIX: repeat the expression
SELECT salary * 12 AS annual
FROM employees
WHERE salary * 12 > 600000;

Tuzak: WHERE Toplama Sonuçlarını Göremez

WHERE gruplamadan önce çalışır; bu nedenle COUNT() gibi toplama sonuçlarını göremez. HAVING bunun içindir: WHERE satırları, HAVING ise toplama işleminden sonra grupları filtreler.

-- WHERE cannot use COUNT(*)
SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

ORDER BY Takma Adları Neden Kullanabilir

Benzer durumun tersi de geçerlidir: ORDER BY, SELECT'ten sonra çalışır; bu nedenle SELECT takma adlarını kullanabilir. Aynı takma adın farklı zamanlarda değerlendirilmesi, burada çalışıp WHERE içinde çalışmamasının nedenidir.

SELECT name, salary * 12 AS annual
FROM employees
ORDER BY annual DESC;

DISTINCT'in Yeri

DISTINCT, SELECT'ten sonra ve ORDER BY'dan önce çalışır. Çıktı sütunlarındaki tekrarları kaldırdığı için yalnızca SELECT listesinde yer alan bir şeye göre sıralama yapabilirsiniz.

-- ERROR in many engines:
-- ORDER BY column not in the DISTINCT select list
SELECT DISTINCT department
FROM employees
ORDER BY hire_date;

Tam Bir Sorgunun Uygulamalı İzlenmesi

Gerçek bir sorgunun adımlardan geçişini izleyelim: FROM satırları okur, WHERE filtreler, GROUP BY gruplara ayırır, HAVING grupları tutar, SELECT hesaplar, ORDER BY sıralar, LIMIT dilimler.

SELECT customer_id, SUM(amount) AS total
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING SUM(amount) > 1000
ORDER BY total DESC
LIMIT 10;

Mantıksal ve Fiziksel Çalıştırma

Hayranlık uyandıran bir ayrıntı şudur: Bu, doğruluğu belirleyen mantıksal sıradır. İyileştiricinin fiziksel planı, aynı satırları ürettiği sürece bundan farklı olabilir.

Sıralamayı Hatırlamak İçin Bir İpucu

Hatırlamak için satırların bir işlem hattında aşağı doğru aktığını ve her adımın bir sonrakine daha küçük bir küme verdiğini düşünün. Bir şey çalışmadığında, daha önceki bir adımın ihtiyaç duyduğu şeyi üretip üretmediğini kontrol edin.

Hızlı Kontrol

Hatayı bulmak için çalıştırma sırasını uygulayın.

Özet

Özet: mantıksal sıra FROM, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, LIMIT şeklindedir. WHERE, SELECT'ten önce çalışır (takma adlar kullanılamaz); ORDER BY sonra çalışır (takma adlar kullanılabilir).

Sıkça Sorulan Sorular

“Mantıksal Sorgu Yürütme Sırası” dersi ücretsiz mi?

Evet — “Mantıksal Sorgu Yürütme Sırası” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“Mantıksal Sorgu Yürütme Sırası” dersinde ne öğreneceğim?

FROM'un SELECT'ten önce çalışmasının nedenini ve gerçek yürütme sırasını bilmenin pek çok şaşırtmalı soruyu nasıl yanıtladığını öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Mantıksal Sorgu Yürütme Sırası” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. SQL Nedir ve Mülakatçılar Neden Soruyor?
  2. Mantıksal Sorgu Yürütme Sırası
  3. Birincil Anahtarlar, Yabancı Anahtarlar ve Kısıtlamalar
  4. Baskı Altında Şema Okuma
← SQL Interview Prep Sayfasına Dön