CodeGym /Kurslar /SQL SELF /Sətir sayının məhdudlaşdırılması (LIMIT) və nəticəyə nəza...

Sətir sayının məhdudlaşdırılması (LIMIT) və nəticəyə nəzarət

SQL SELF
Səviyyə , Dərs
Mövcuddur

Sorğunun qaytardığı sətirlərin sayını necə məhdudlaşdırmaq olar? Əgər sənə sadəcə ilk 5 tələbə, ən yüksək maaş alan işçi və ya top-10 məhsulun siyahısı lazımdırsa, LIMIT komandası tam sənin üçündür!

Verilənlər bazası ilə işləyəndə sorğunun nəticəsi bəzən çox böyük həcmdə olur. Belə hallarda qaytarılan məlumatın həcmini məhdudlaşdırmaq lazım gəlir ki:

  1. Server və şəbəkəyə yükü azaldasınız.
  2. Məlumatı sonsuz səhifələrdə gəzmədən rahat analiz edəsiniz.

Sadə bir analogiya: təsəvvür elə, barda bir qıza içki almaq istədin, amma təsadüfən bütün ziyarətçilərə içki ısmarladın. Əlbəttə, bu təsir edicidir, amma sənə bu qədər qız niyə lazımdır? Ona görə də sadəcə lazım olanı sifariş etməyi öyrənirik və LIMIT burada köməyə gəlir.

LIMIT üçün əsas sintaksis

Hər şey belə görünür:

SELECT kolonka1, kolonka2
FROM cədvəl
LIMIT sətir_sayı;

Nümunə 1: Qeydlərin məhdudlaşdırılması

Tutaq ki, səndə 1000 sətrlik students cədvəli var. Biz sadəcə ilk 3 qeydi görmək istəyirik:

SELECT *
FROM students 
LIMIT 3;

Nəticə:

id name age
1 Otto 20
2 Anna 22
3 Alex 19

Çox sadə: uzun siyahı əvəzinə sadəcə üç sətir görürük. LIMIT bizə istədiyimiz qədər sətir qaytardı.

LIMIT üçün praktik tətbiqlər

Nümunə 2: Top məhsullar

products cədvəli ilə işləyirsən və ən bahalı beş məhsulun adını və qiymətini bilmək istəyirsən. Əvvəlcə qeydləri qiymətə görə azalan sıralayırıq, sonra nəticəni məhdudlaşdırırıq:

SELECT product_name, price
FROM products 
ORDER BY price DESC 
LIMIT 5;

Nəticə:

product_name price
iPhone 16 Pro Max 1500
MacBook Pro 1200
AirPods Pro 300
iPad Pro 280
Apple Watch 250

İndi sadəcə ən bahalı top-5 məhsulu görürsən.

LIMIT sorğuları test etməkdə necə kömək edir

SQL sorğuları yazanda çoxlu məlumatla qarşılaşırsan. LIMIT əvvəlcə sorğunun düzgün işlədiyini yoxlamaq üçün az sayda məlumat qaytarmağa kömək edir. Məsələn:

SELECT *
FROM transactions_log
LIMIT 10;

Sorğunun məntiqinin düzgün olduğuna əmin olandan sonra LIMIT-i silə bilərsən.

LIMIT istifadə xüsusiyyətləri

1. LIMIT ORDER BY olmadan

Əgər ORDER BY göstərməsən, LIMIT məlumatı təsadüfi qaydada — daha doğrusu, cədvəldə necə saxlanılıbsa, o cür qaytaracaq. Adətən problem olmur, amma bəzən bu, gözlənilməz ola bilər.

Məsələn:

SELECT name, age
FROM students 
LIMIT 3;

ORDER BY göstərmədən, hansı üç qeydin nəticəyə düşəcəyinə əmin ola bilməzsən.

Bunu aradan qaldırmaq üçün ORDER BY istifadə et:

SELECT name, age
FROM students 
ORDER BY age DESC 
LIMIT 3;

2. WHERE ilə birlikdə istifadə

WHERE ilə sətirləri filtr edib, LIMIT ilə nəticəni məhdudlaşdıra bilərik. Bu, məlumat çox olanda və səni sadəcə ilk uyğunluqlar maraqlandıranda rahatdır.

SELECT *
FROM students 
WHERE age > 18 
LIMIT 5;

Bu sorğu 18 yaşdan böyük ilk 5 tələbəni qaytaracaq.

3. Praktik tətbiq: məlumatın ilk səhifəsinə baxış

Məlumatların göstərilməsi sistemi ilə işləyirsənsə (məsələn, web-app), LIMIT ilk səhifəni göstərmək üçün istifadə oluna bilər.

SELECT *
FROM employees 
ORDER BY hire_date 
LIMIT 10;

Burada işə qəbul tarixinə görə sıralanmış ilk 10 işçini alırsan.

Dərin nümunə: LIMIT və aggregatlarla birgə istifadə

Təsəvvür elə, ən populyar üç məhsul kateqoriyasını çıxarmaq istəyirsən:

SELECT category, COUNT(*) AS total_products
FROM products 
GROUP BY category 
ORDER BY total_products DESC 
LIMIT 3;

Bu sorğu əvvəlcə məhsulları kateqoriyalara bölür, sayına görə sıralayır və sadəcə üç sətri saxlayır.

GROUP BY operatorunun və COUNT() funksiyasının necə işlədiyini növbəti dərslərdə öyrənəcəksən.

LIMIT istifadə zamanı tipik səhvlər

LIMIT ilə işləyəndə bir neçə problemlə qarşılaşa bilərsən:

"Sətirlərin təsadüfi qaydası": əgər ORDER BY yaddan çıxsa, məlumatlar gözlənilməz ardıcıllıqla gələ bilər. Sıra vacibdirsə, həmişə sıralama göstər.

"Vacib məlumatların kəsilməsi": məsələn, iki qeydin sıralama sütununda eyni dəyəri varsa, LIMIT natamam nəticə qaytara bilər. Belə hallardan qaçmaq üçün əlavə sıralama meyarları əlavə et.

SELECT *
FROM students 
ORDER BY age DESC, name ASC 
LIMIT 5;

"WHERE ilə səhv kombinasiyası". Bəzən filtr şərtləri nəticəni o qədər daraldır ki, LIMIT mənasız olur. Məsələn, WHERE sadəcə 2 sətir qaytarırsa, LIMIT 10 olsa belə, yenə də 2 sətir alacaqsan.

"Verilənlər bazasından asılılıq". Bəzi DBMS-lərdə sətir məhdudlaşdırmaq üçün alternativ sintaksis var (məsələn, SQL Server-də TOP). PostgreSQL isə məhz LIMIT istifadə edir.

LIMIT real həyatda niyə lazımdır?

Çoxlu qeydi olan interfeyslər: təsəvvür elə, online mağazadasan və məhsullara səhifə-səhifə baxırsan. İlk səhifədə sadəcə 10 qeyd ola bilər və LIMIT bunu mümkün edir.

Hesabatlar: çox vaxt səni sadəcə yuxarı hissə maraqlandırır (məsələn, top-5 işçi, satış liderləri, ən yüksək bal toplayan tələbələr).

Sorğuların test və optimizasiyası: milyonlarla sətr əvəzinə, sorğunu tez bir zamanda az sayda nümunə ilə yoxlaya bilərsən.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION