CodeGym /Kurslar /SQL SELF /Məntiqi operatorlar (AND, OR, NOT): şərtlərin kombinasiya...

Məntiqi operatorlar (AND, OR, NOT): şərtlərin kombinasiyası

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

Məntiqi operatorlar — bunlar sorğularda şərtləri birləşdirməyə kömək edən alətlərdir, yəni daha mürəkkəb filtrasiya edə bilərsən. Yəqin ki, artıq proqramlaşdırma dillərində bunlarla rastlaşmısan. Əgər sorğuları spam filtrləmə proqramı ilə müqayisə etsək, məntiqi operatorlar elə qaydalardır ki, məktublar "Spam" qovluğuna gedir, ya da "Gələnlər"də qalır.

SQL — tez-tez məlumatları seçmək və ya analiz etmək üçün istifadə olunan alətdir. Məntiqi operatorlar (AND, OR, NOT) bir neçə şərti bir sorğuda birləşdirməyə imkan verir ki, daha mürəkkəb suallara cavab verə biləsən, məsələn:

  • Hansı tələbələr 18 yaşdan böyüktür qiyməti "A"-dır?
  • Hansı məhsullar "Elektronika" və ya "Məişət texnikası" kateqoriyasına aiddir?
  • Hansı müştərilər heç alış-veriş etməyib?

Gəlin SQL-də üç əsas məntiqi operatora baxaq:

  1. AND: hər iki şərt doğru olmalıdır.
  2. OR: ən azı bir şərt doğru olmalıdır.
  3. NOT: şərti tərsinə çevirir (inkar edir).

AND operatoru: hər iki şərt doğrudur

AND operatoru imkan verir ki, hər iki şərt yerinə yetirilsin və yalnız o zaman sətr nəticəyə düşsün.

Sintaksis

SELECT kolonka1, kolonka2
FROM cedvel
WHERE sert AND sert2;

Nümunə 1: 18 yaşdan böyük qiyməti "A" olan tələbələrin filtrasiyası

Tutaq ki, bizdə students cədvəli var:

id name age grade
1 Alex 20 A
2 Maria 19 B
3 Otto 17 A
4 Anna 22 A

Sorğu:

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';

Nəticə:

name age grade
Alex 20 A
Anna 22 A

Nümunə 2: "HR" departamentindən olan maaşı 50000-dən yuxarı olan işçilərin filtrasiyası

SELECT name, department, salary
FROM employees
WHERE department = 'HR' AND salary > 50000;

OR operatoru: ən azı bir şərt doğrudur

OR operatoru istifadə olunur, əgər ən azı bir şərtə uyğun sətrləri seçmək lazımdırsa.

Sintaksis

SELECT kolonka1, kolonka2
FROM cedvel
WHERE sert OR sert2;

Nümunə 1: Qiyməti "A" və ya "B" olan tələbələrin filtrasiyası

SELECT name, age, grade
FROM students
WHERE grade = 'A' OR grade = 'B';

Nəticə:

name age grade
Alex 20 A
Maria 19 B
Otto 17 A
Anna 22 A

Nümunə 2: "Elektronika" kateqoriyasından və ya qiyməti 100-dən az olan məhsullar

products cədvəli:

product_id name category price
1 Televizor Elektronika 300
2 Utyuq Məişət texnikası 50
3 Smartfon Elektronika 700
4 Çaydan Məişət texnikası 80
SELECT name, category, price
FROM products
WHERE category = 'Elektronika' OR price < 100;

Nəticə:

name category price
Televizor Elektronika 300
Utyuq Məişət texnikası 50
Çaydan Məişət texnikası 80
Smartfon Elektronika 700

NOT operatoru: şərtin inkarı

Əgər ANDOR şərtlərin doğru olmasını tələb edirsə, NOT tam əksini edir: o, göstərilən şərt yalan olan sətrləri seçir.

Sintaksis

SELECT kolonka1, kolonka2
FROM cedvel
WHERE NOT sert;

Nümunə 1: Qiyməti "A" olmayan tələbələrin filtrasiyası

SELECT name, age, grade
FROM students
WHERE NOT grade = 'A';

Nəticə:

name age grade
Maria 19 B

Nümunə 2: "Elektronika" kateqoriyasına aid olmayan məhsulların çıxarılması

SELECT name, category, price
FROM products
WHERE NOT category = 'Elektronika';

Məntiqi operatorların kombinasiyası

Məntiqi operatorları birləşdirib daha mürəkkəb şərtlər yaza bilərsən. Məsələn, əgər istəyirsən ki, 18 yaşdan böyük qiyməti "A" və ya "B" olan tələbələri seçəsən, ANDOR bir yerdə istifadə edə bilərsən.

Kombinasiya sintaksisi

SELECT kolonka1, kolonka2
FROM cedvel
WHERE (sert1 AND sert2) OR sert3;

Nümunə: 18 yaşdan böyük və qiyməti "A" olan tələbələr və ya qiyməti "B" olan tələbələr

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR grade = 'B';

Nəticə:

name age grade
Alex 20 A
Anna 22 A
Maria 19 B

Operatorların icra prioriteti

Vacibdir ki, yadda saxlayasan: SQL məntiqi operatorları bu ardıcıllıqla icra edir:

  1. NOT
  2. AND
  3. OR

Sən mötərizələrdən istifadə edib icra ardıcıllığını dəyişə bilərsən. Mötərizə olmadan nəticə gözlənilməz ola bilər!

Nümunə: Mötərizəsiz və mötərizəli müqayisə

Bu sorğuda nə baş verəcək?

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';

Bu sorğu aşağıdakı tələbələri seçir:

  1. 18 yaşdan böyük qiyməti "A" olanlar.
  2. Qiyməti "B" olanlar.

Operatorların icra prioriteti nəticəni elə verir ki, sanki mötərizə var:

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR (grade = 'B');

Amma əgər mötərizə əlavə etsək:

SELECT name, age, grade
FROM students
WHERE age > 18 AND (grade = 'A' OR grade = 'B');

İndi seçiləcək tələbələr 18 yaşdan böyük və qiyməti "A" və ya "B" olanlardır. Mötərizələr həqiqətən hər şeyi dəyişir!

Məntiqi operatorlardan istifadə zamanı tipik səhvlər

  1. Mötərizələr unudulub. Bu, xüsusilə ANDOR birləşdiriləndə gözlənilməz nəticələrə səbəb ola bilər.
  2. NOT istifadə edəndə, hansı sətrlərin çıxarılacağını tam başa düşməmək.
  3. Məntiqi operatorların səhv istifadəsi. Məsələn, AND əvəzinə OR və ya əksinə.
  4. Şərtlərin mürəkkəbliyi. Çox uzun şərtlər, bir neçə AND, OR, NOT və şərhsiz kod oxunmaz olur.

Bu operatorlar — istənilən mürəkkəb sorğunun əsasını təşkil edir. İndi sən elə sorğular yaza bilərsən ki, təkcə işləməsin, həm də dəqiq lazım olanı tapsın!

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