SQL operatorlar: BETWEEN, IN, LIKE
WHERE darsida shartlarni =, >, AND, OR bilan yozdik.
SQL’da yana uch qulay operator bor — ular tez-tez uchraydigan filtrlarni
ancha qisqartiradi: BETWEEN, IN va LIKE.
mahsulotlar jadvali:
| id | nom | narx | soni | turi |
|---|---|---|---|---|
| 1 | Olma | 8000 | 50 | meva |
| 2 | Non | 3000 | 120 | non |
| 3 | Sut | 12000 | 30 | sut mahsuloti |
| 4 | Choy | 15000 | 40 | ichimlik |
| 5 | Banan | 14000 | 25 | meva |
| 6 | Qatiq | 9000 | 0 | sut mahsuloti |
| 7 | Suv | 4000 | 200 | ichimlik |
| 8 | Guruch | 18000 | 60 | don |
BETWEEN — oraliq
BETWEEN a AND b — qiymat a va b oralig’idami (ikkala chegara ham
kiradi):
SELECT nom, narx FROM mahsulotlar WHERE narx BETWEEN 8000 AND 13000;
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
Natija — narxi 8000 dan 13000 gacha:
| nom | narx |
|---|---|
| Olma | 8000 |
| Sut | 12000 |
| Qatiq | 9000 |
Bu narx >= 8000 AND narx <= 13000 bilan bir xil, lekin qisqaroq va
o’qishga tushunarli.
IN — ro’yxatdan biri
IN (...) — qiymat berilgan ro’yxatdagilardan biriga tengmi:
SELECT nom, turi FROM mahsulotlar WHERE turi IN ('meva', 'ichimlik');
Natija — turi meva yoki ichimlik bo’lganlar:
| nom | turi |
|---|---|
| Olma | meva |
| Choy | ichimlik |
| Banan | meva |
| Suv | ichimlik |
Bu turi = 'meva' OR turi = 'ichimlik' bilan bir xil. Variant ko’p bo’lsa,
IN ancha qisqa. Aksini kerak bo’lsa — NOT IN (...).
LIKE — matn shabloni
LIKE matnni shablon bo’yicha qidiradi. Ikki joker belgi ishlatiladi:
%— istalgan sondagi istalgan belgi (0 ta ham, ko’p ham)_— aynan bitta istalgan belgi
S bilan boshlanadigan nomlar:
SELECT nom FROM mahsulotlar WHERE nom LIKE 'S%';
Natija — Sut va Suv. Boshqa shablonlar:
'%v'—vbilan tugaydigan: Suv'%a%'— ichidaabor: Olma, Banan, Qatiq'_ut'— bitta belgi + “ut”: Sut
Uchalasini birlashtirish
Bu operatorlar sodda shartlar bilan AND/OR orqali birlashadi:
SELECT nom, narx FROM mahsulotlar
WHERE turi IN ('meva', 'don') AND narx > 10000;
Bu — turi meva yoki don, va narxi 10000 dan qimmat bo’lganlar: Banan (meva, 14000) va Guruch (don, 18000).
Amaliy mashq
Operatorlarni sinang:
BETWEENbilan narxi 8000-13000 oralig’idagilarni toping;INbilan'meva'va'ichimlik'turlarini birga oling;LIKE 'S%'bilan S harfidan boshlanadiganlarni toping;LIKE '%t%'bilan ichidatbor nomlarni toping;NOT INbilan meva bo’lmaganlarni chiqaring.
BETWEEN 8000 AND 13000 chegaralarni o’z ichiga oladimi? Sinab tekshiring.
Qisqacha xulosa
BETWEEN a AND b—avaboralig’i; ikkala chegara ham kiradi.IN (...)— ro’yxatdagi qiymatlardan biriga tenglik;NOT IN— teskarisi.LIKE— matn shabloni:%(istalgan sondagi belgi),_(bitta belgi).- Bu operatorlar
AND/ORbilan boshqa shartlarga qo’shiladi. - Uchalasi ham
WHEREni qisqaroq va o’qishga qulayroq qiladi.
Keyingi darsda AS bilan ustun va jadvallarga
taxallus (vaqtinchalik nom) berishni ko’ramiz — natijani chiroyliroq
va JOIN’ni qulayroq qiladi.