SQL-də CASE WHEN və WHERE ifadələrinin Fərqləri: Aydın və Maraqlı

SQL dilində istənilən məlumatın idarə edilməsi və manipulyasiyası üçün bir çox güclü vasitələr mövcuddur. Bu vasitələrdən ikisi — CASE WHEN və WHERE — tez-tez qarışdırıla bilər, lakin onların məqsəd və istifadəsi tamamilə fərqlidir. Gəlin, bu iki ifadənin fərqlərini sadə və aydın şəkildə nəzərdən keçirək.

WHERE: Məlumatın filtrələnməsi

WHERE şərti SQL sorğusunda verilənləri süzgəcdən keçirmək üçün istifadə olunur. Bu ifadə yalnızca sorğu başladıqda icra olunur və nəticə dəstəyi ancaq müəyyən şərtlərə uyğun olan sətirləri qaytarır.

Məqsəd: Sətirləri seçmək.

Misal: Aşağıdakı sorğu yalnız maaşı 5000-dən böyük olan işçiləri qaytaracaq:

SELECT * 
FROM employees 
WHERE salary > 5000;

CASE WHEN: Dinamik dəyərlərin yaradılması

CASE WHEN isə bir sütunun və ya ifadənin dəyərini dinamik olaraq dəyişmək üçün istifadə olunur. Bu şərt filtrasiya etmir, əksinə yeni dəyərlər yaradır və ya nəticə dəstində mövcud olan məlumatları manipulyasiya edir.

Məqsəd: Şərtə əsaslanaraq dəyərləri dəyişmək və ya təyin etmək.

Misal: Aşağıdakı sorğu maaşına əsasən işçiləri kateqoriyalara ayırır:

SELECT 
    name, 
    salary,
    CASE 
        WHEN salary > 5000 THEN 'Yüksək'
        WHEN salary BETWEEN 3000 AND 5000 THEN 'Orta'
        ELSE 'Aşağı'
    END AS salary_category
FROM employees;

Hər İkisini Necə Birlikdə İstifadə Etmək Olar?

Hər iki ifadə birlikdə istifadə oluna bilər. Məsələn, əvvəlcə məlumatı filtr edib, sonra onu CASE WHEN ilə dəyişdirə bilərsiniz:

SELECT 
    name, 
    salary,
    CASE 
        WHEN salary > 5000 THEN 'Premium'
        ELSE 'Standard'
    END AS tier
FROM employees
WHERE salary > 3000;

Burada:

  • WHERE maaşı 3000-dən böyük olanları filtr edir.
  • CASE WHEN isə filtrdən keçən maaşlara əsaslanaraq dəyərləri dəyişir.

Əsas Fərqlər

Funksional fərq:
WHERE sətirləri sorğunun başlanğıcında filtr edir və yalnız şərtə uyğun olan sətirləri nəticəyə daxil edir. Məsələn, bir cədvəldə maaşı 5000-dən az olan işçiləri nəticəyə daxil etmək istəmirsinizsə, WHERE bunu təmin edir. Digər tərəfdən, CASE WHEN verilənlərin özünü dəyişdirir və ya manipulyasiya edir. Yəni, yeni sütunlar və ya şərtə əsaslanan dəyərlər yaradır. Bu, sorğu nəticəsində məlumatları daha çevik formada təqdim etmək üçün istifadə olunur.

Yer fərqi:
WHERE ifadəsi sorğunun əvvəlində, əsasən FROM və ya JOIN ifadələrindən dərhal sonra istifadə edilir. Bu, məlumatın əvvəlcədən süzgəcdən keçirilməsini təmin edir. CASE WHEN isə daha çox SELECT bölməsində və ya nəticələrdə manipulyasiya etmək üçün istifadə olunur. Yəni, filtrasiya yox, məlumatın formalaşdırılması üçün işləyir.

Nəticəyə təsir:
WHERE istənməyən sətirləri tamamilə xaric edir, yəni onlar sorğunun nəticəsinə daxil olmur. CASE WHEN isə sətirləri xaric etmir; əksinə, şərtlərə əsasən yeni dəyərlər yaradır. Bu, xüsusilə hesablama və kateqoriyalaşdırma üçün faydalıdır.

Əsas sual: Məlumatı seçmək istəyirəm, yoxsa dəyişmək?

  • Seçim etmək istəyirsinizsə, WHERE istifadə edin.
  • Dəyərləri manipulyasiya etmək istəyirsinizsə, CASE WHEN-ə müraciət edin.

Xülasə: Nə Zaman Hansını İstifadə Etməliyik?

  • Məlumatı süzgəcdən keçirmək istəyirsinizsə, WHERE istifadə edin.
  • Dinamik sütunlar və ya şərtli dəyərlər yaratmaq istəyirsinizsə, CASE WHEN seçin.

Alas Academy təlim proqramlarımız kibertəhlükəsizlik sahəsində nəzəri bilikləri