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:
- Server və şəbəkəyə yükü azaldasınız.
- 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.
GO TO FULL VERSION