İçeriğe geç

SQL · 3/8

Sıralama ve sınırlama: ORDER BY & LIMIT

Sorgu sonuçlarını belirli bir ölçüte göre sıralamak ve en üstteki kayıtları LIMIT ile sınırlandırmak.

Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.

Bu sayfada · 9 başlık

Başlamadan önce

Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.

Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

SQL · Sıralama ve sınırlama: ORDER BY & LIMIT — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

Videoyla adım adım izle

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Sıralama ve sınırlama: ORDER BY & LIMIT

Sorgu sonuçlarını belirli bir ölçüte göre sıralamak ve en üstteki kayıtları LIMIT ile sınırlandırmak.

Kavramı kur

İlişkisel veritabanları kayıtları disk üzerinde rastgele veya ekleme sırasına göre saklar; sen açıkça sıralama istemedikçe sonuçların belirli bir sırada geleceği garanti edilemez. Sıralama yapmak için ORDER BY kullanılır.

Neden böyle çalışıyor?

ORDER BY varsayılan olarak artan (ASC - A'dan Z'ye, küçükten büyüğe) sıralar. Azalan sıralama (Z'den A'ya, büyükten küçüğe) için sütun adının yanına DESC yazılır.

Çalışma sırası

Web sayfalarında sayfalama yaparken veya en yüksek puanlı ilk kayıtları alırken LIMIT kullanılır. ORDER BY ve LIMIT birlikte kullanıldığında en iyi/en son kayıtları kolayca alırsın.

İkinci örnek · 1

FROM calisanlar tablosu taranır. Kodun tamamı yazılı derste bulunur.

Kod

SELECT ad, maas
FROM calisanlar
ORDER BY maas DESC
LIMIT 2;

Beklenen sonucu oku

Gereksiz satırlar elenerek hafif bir sonuç döner.

Beklenen çıktı: ad | maas Ahmet | 65000 Ayşe | 52000

Bir değeri sen değiştir

Çalışanları ada göre alfabetik (A-Z) sıralayan sorguyu yaz. En düşük maaş alan ilk çalışanı bulmak için ORDER BY maas ASC LIMIT 1 kullan.

Hata nereden gelir?

LIMIT sözcüğünü ORDER BY'dan önce yazmak sözdizimi hatasıdır; LIMIT daima en sonda yer alır.

Kendi çözümünü kur

Fiyatı en yüksek 5 ürünü getiren örnek bir sorgu kur. Alfabetik sıralama için ORDER BY ad ASC veya sadece ORDER BY ad yazabilirsin.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

SELECT ad, maas
FROM calisanlar
ORDER BY maas ASC
LIMIT 1;

Kendini kontrol et

ORDER BY yazılmazsa dönen kayıtların sırası garanti midir? Yanıt: Hayır; ilişkisel veritabanlarında ORDER BY belirtilmedikçe satır sırası tamamen tanımsızdır.

Beklenen çıktı: ad | maas Mehmet | 48000

Konu anlatımı

İlişkisel veritabanları kayıtları disk üzerinde rastgele veya ekleme sırasına göre saklar; sen açıkça sıralama istemedikçe sonuçların belirli bir sırada geleceği garanti edilemez. Sıralama yapmak için ORDER BY kullanılır.

ORDER BY varsayılan olarak artan (ASC - A'dan Z'ye, küçükten büyüğe) sıralar. Azalan sıralama (Z'den A'ya, büyükten küçüğe) için sütun adının yanına DESC yazılır.

Web sayfalarında sayfalama yaparken veya en yüksek puanlı ilk kayıtları alırken LIMIT kullanılır. ORDER BY ve LIMIT birlikte kullanıldığında en iyi/en son kayıtları kolayca alırsın.

İlk örneği oku ve dene

3

Sıralama ve sınırlama: ORDER BY & LIMIT

Sonuçları artan (ASC) veya azalan (DESC) sıraya koyar. LIMIT ise sadece ilk birkaç kaydı getirir.

SQL
SELECT ad, maas
FROM calisanlar
ORDER BY maas DESC
LIMIT 2;

▶ Sonuç

ad | maas
Ahmet | 65000
Ayşe | 52000

Adım adım neden böyle çalışıyor?

  1. FROM calisanlar tablosu taranır.
  2. ORDER BY maas DESC kayıtları maaşlarına göre en yüksekten en düşüğe sıralar.
  3. LIMIT 2 sıralanmış listenin yalnızca ilk iki satırını kesip alır.
  4. Gereksiz satırlar elenerek hafif bir sonuç döner.
103

İkinci çözümlü örnek

Sorgu sonuçlarını belirli bir ölçüte göre sıralamak ve en üstteki kayıtları LIMIT ile sınırlandırmak.

SQL
SELECT ad, maas
FROM calisanlar
ORDER BY maas DESC
LIMIT 2;

▶ Sonuç

ad | maas
Ahmet | 65000
Ayşe | 52000

Kolaydan zora sen dene

  1. Çalışanları ada göre alfabetik (A-Z) sıralayan sorguyu yaz.
  2. En düşük maaş alan ilk çalışanı bulmak için ORDER BY maas ASC LIMIT 1 kullan.
  3. Fiyatı en yüksek 5 ürünü getiren örnek bir sorgu kur.
İpucunu aç

Alfabetik sıralama için ORDER BY ad ASC veya sadece ORDER BY ad yazabilirsin.

Üç görevin açıklamalı çözümünü oku
  1. ORDER BY ad ASC veya sadece ORDER BY ad alfabetik sıralama yapar.
  2. En düşük maaş için ORDER BY maas ASC LIMIT 1 yazılır.
  3. En yüksek 5 ürün için ORDER BY fiyat DESC LIMIT 5 yazılır.
Bir çözüm varyasyonu gör
203

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

SQL
SELECT ad, maas
FROM calisanlar
ORDER BY maas ASC
LIMIT 1;

▶ Sonuç

ad | maas
Mehmet | 48000

Yaygın hata ve çözümü

  1. LIMIT sözcüğünü ORDER BY'dan önce yazmak sözdizimi hatasıdır; LIMIT daima en sonda yer alır.
  2. Sıralama belirtmeden LIMIT kullanmak rastgele satırların gelmesine neden olur.

Kendini değerlendir

Kayıtları azalan (büyükten küçüğe) sırada listelemek için ne yazılır?

Ezberlemeden açıklayabiliyor musun?

ORDER BY yazılmazsa dönen kayıtların sırası garanti midir?

Açıklamalı yanıt

Hayır; ilişkisel veritabanlarında ORDER BY belirtilmedikçe satır sırası tamamen tanımsızdır.

Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.

Kaynak ve çalışma ortamı

Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.

Resmî dil belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.