Məzmuna keç
Educora
Başlanğıc16 dəq4 / 22

LIKE, IN, BETWEEN və IS NULL

Nümunə üzrə axtarış (LIKE), qiymətlər siyahısı (IN), aralıq (BETWEEN) və çatışmayan məlumatlarla (NULL) işləməyi öyrən.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • LIKE və %, _ işarələri ilə mətn axtarmaq
  • IN və BETWEEN ilə şərtləri qısa yazmaq
  • NULL-un mənasını başa düşmək və IS NULL, COALESCE ilə işləmək

Axtarış xanasına soyadın yalnız bir hissəsini yazanda sayt yenə də lazım olan adamı tapır. Bəs «Sumqayıt, Quba və ya Naxçıvandan olan şagirdlər», «qiyməti 10 ilə 55 arasında olan məhsullar» və ya «e-poçtu olmayan şagirdlər» necə tapılır? Bunun üçün SQL-də dörd xüsusi operator var: LIKE, IN, BETWEEN və IS NULL.

LIKE: nümunə üzrə axtarış

LIKE mətni nümunə (şablon) ilə müqayisə edir. Nümunədə iki xüsusi işarə var: % istənilən sayda simvolu (sıfır da ola bilər), _ isə düz bir simvolu əvəz edir.

NümunəNəyə uyğundurNümunə qiymət
'A%'A ilə başlayanAysel
'%ova'ova ilə bitənAbbasova
'%set%'içində set olanChess set
'_u%'ikinci hərfi u olanMurad
'____'düz dörd simvoldan ibarətQuba
SQL
SELECT first_name, last_name
FROM students
WHERE last_name LIKE '%ova'
ORDER BY id;
▸ Gözlənilən nəticə
first_name | last_name
Aysel | Məmmədova
Leyla | Hüseynova
Günay | Abbasova
Səbinə | Nəsirova
Fidan | Cəfərova
Soyadı «ova» ilə bitən şagirdlər.
SQL
SELECT first_name
FROM students
WHERE first_name LIKE '_u%'
ORDER BY id;
▸ Gözlənilən nəticə
first_name
Murad
Tural
_ düz bir simvol, % isə qalan hər şeydir.

IN: qiymətlər siyahısı

city = 'Sumqayıt' OR city = 'Quba' OR city = 'Naxçıvan' yazmaq uzun və yorucudur. IN operatoru eyni şərti qısa yazmağa imkan verir: qiymət mötərizədəki siyahıda varsa, şərt doğrudur. NOT IN isə əksinə, siyahıda olmayan qiymətləri seçir.

SQL
SELECT first_name, city
FROM students
WHERE city IN ('Sumqayıt', 'Quba', 'Naxçıvan')
ORDER BY id;
▸ Gözlənilən nəticə
first_name | city
Elvin | Sumqayıt
Səbinə | Quba
Fidan | Naxçıvan
Orxan | Sumqayıt
SQL
SELECT name, category
FROM products
WHERE category NOT IN ('Electronics', 'Stationery')
ORDER BY id;
▸ Gözlənilən nəticə
name | category
Backpack | Accessories
Desk lamp | Home
Water bottle | Accessories
Chess set | Games

BETWEEN: aralıq

x BETWEEN a AND b şərti x >= a AND x <= b ilə eynidir, yəni hər iki sərhəd daxildir. Aşağıda qiyməti düz 55 olan Backpack da nəticəyə düşür. Kiçik qiymət həmişə birinci yazılır: BETWEEN 55 AND 10 heç nə qaytarmır.

SQL
SELECT name, price
FROM products
WHERE price BETWEEN 10 AND 55
ORDER BY price;
▸ Gözlənilən nəticə
name | price
Water bottle | 12
Desk lamp | 34.99
Chess set | 42
Backpack | 55
SQL
SELECT id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2025-02-01' AND '2025-03-31'
ORDER BY order_date;
▸ Gözlənilən nəticə
id | customer_id | order_date
3 | 2 | 2025-02-02
4 | 3 | 2025-02-10
5 | 4 | 2025-03-05
6 | 5 | 2025-03-18
Fevral və mart aylarının sifarişləri. Tarixlərdə vaxt da olsaydı (2025-03-31 14:00), martın 31-də günortadan sonra verilən sifarişlər artıq aralığa düşməzdi.

NULL: məlumat yoxdur

Tərif
NULL

Qiymətin olmadığını və ya məlum olmadığını bildirən xüsusi işarə. NULL sıfır deyil, boş mətn ('') də deyil — sadəcə «məlumat yoxdur» deməkdir.

Naməlum qiymətlə istənilən müqayisə və ya hesablama yenə naməlum nəticə — NULL verir. Hətta NULL = NULL də doğru deyil, NULL-dur: iki naməlum qiymətin bərabər olub-olmadığını bilmirik. WHERE isə yalnız şərti doğru olan sətirləri saxlayır.

SQL
SELECT NULL = NULL AS a,
       NULL + 5    AS b,
       5 > NULL    AS c;
▸ Gözlənilən nəticə
a | b | c
NULL | NULL | NULL
SQL
-- wrong: the condition is never true
SELECT COUNT(*) AS found
FROM students
WHERE email = NULL;
▸ Gözlənilən nəticə
found
0
COUNT(*) tapılan sətirləri sayır. = NULL ilə heç nə tapılmır, halbuki iki şagirdin e-poçtu yoxdur.
SQL
-- right: IS NULL
SELECT first_name, last_name, email
FROM students
WHERE email IS NULL
ORDER BY id;
▸ Gözlənilən nəticə
first_name | last_name | email
Elvin | Quliyev | NULL
Tural | İsmayılov | NULL

IS NOT NULL isə qiyməti olan sətirləri seçir. Nəticədə NULL əvəzinə başqa qiymət göstərmək üçün COALESCE(a, b, ...) funksiyası var: o, siyahıdakı ilk NULL olmayan qiyməti qaytarır. SQLite və MySQL-də bunun qısa forması IFNULL(a, b), SQL Server-də isə ISNULL(a, b)-dir; COALESCE isə hamısında işləyir.

SQL
SELECT first_name,
       COALESCE(email, 'no email') AS contact
FROM students
WHERE grade = 11
ORDER BY id;
▸ Gözlənilən nəticə
first_name | contact
Elvin | no email
Tural | no email
Fidan | fidan@example.com
Nümunə tapşırıq

Bakı və ya Sumqayıtda yaşayan, 14–15 yaşlı və e-poçtu olan şagirdləri tap.

Həllini göstər
Üç şərti AND ilə birləşdiririk:
şəhər siyahıdadır — city IN ('Bakı', 'Sumqayıt');
yaş aralıqdadır — age BETWEEN 14 AND 15;
e-poçt var — email IS NOT NULL.
Nəticə: Aysel, Leyla, Kamran və Orxan. Elvin də Sumqayıtdandır, amma onun 17 yaşı var və e-poçtu yoxdur.
SQL
SELECT first_name, city, age
FROM students
WHERE city IN ('Bakı', 'Sumqayıt')
  AND age BETWEEN 14 AND 15
  AND email IS NOT NULL
ORDER BY id;
▸ Gözlənilən nəticə
first_name | city | age
Aysel | Bakı | 15
Leyla | Bakı | 14
Kamran | Bakı | 15
Orxan | Sumqayıt | 14
Tapşırıq

Qiyməti 30 ilə 150 arasında olan (sərhədlər daxil) və Electronics, Home və ya Games kateqoriyasına aid məhsulların adını və qiymətini göstər. Nəticəni qiymətə görə artan sırada düz.

Tapşırıq · SQL
SELECT name, price
FROM products
-- use BETWEEN and IN
ORDER BY price;
▸ Gözlənilən nəticə
name | price
Desk lamp | 34.99
Chess set | 42
Headphones | 120.5
Tapşırıq

Soyadı ov ilə bitən və e-poçtu olan şagirdlərin adını, soyadını və e-poçtunu göstər. Nəticəni ada (first_name) görə düz.

Tapşırıq · SQL
SELECT first_name, last_name, email
FROM students
-- add the two conditions
ORDER BY first_name;
▸ Gözlənilən nəticə
first_name | last_name | email
Kamran | Həsənov | kamran@example.com
Rəşad | Kərimov | rashad@example.com

Əsas fikirlər

  • LIKE nümunə ilə axtarır: % — istənilən sayda simvol, _ — düz bir simvol.
  • IN (...) uzun OR zəncirini əvəz edir, NOT IN isə siyahıda olmayanları seçir.
  • BETWEEN a AND b hər iki sərhədi daxil edir; kiçik qiymət birinci yazılır.
  • NULL «məlumat yoxdur» deməkdir; onunla müqayisə NULL verir.
  • Boş qiymətləri IS NULL / IS NOT NULL ilə yoxla, COALESCE ilə əvəz et.

Özünü yoxla

10 sual. Hər düzgün cavab XP qazandırır.

1 / 10
Hansı nümunə A hərfi ilə başlayan adları tapır?