SQL WHERE — shart bo'yicha filtrlash
O’tgan darsda SELECT bilan ustunlarni tanladik, lekin har
safar barcha qatorlar qaytardi. Amalda esa ko’pincha ma’lum shartga
javob beradigan qatorlar kerak: “narxi 10000 dan qimmatlari” yoki “soni
tugaganlari”. Buni WHERE bajaradi.
Misollarda namuna bazadagi mahsulotlar jadvalidan foydalanamiz:
| 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 |
WHERE — asosiy filtr
WHERE FROM dan keyin yoziladi va shart qo’yadi. Faqat shart rost
bo’lgan qatorlar qaytadi:
SELECT nom, narx FROM mahsulotlar WHERE narx > 10000;
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
Natija — narxi 10000 dan katta bo’lganlar:
| nom | narx |
|---|---|
| Sut | 12000 |
| Choy | 15000 |
| Banan | 14000 |
| Guruch | 18000 |
Boshqa qatorlar tushib qoldi, chunki ularning narxi shartga mos kelmadi.
Taqqoslash amallari
WHERE da quyidagi amallar ishlatiladi:
| Amal | Ma’nosi |
|---|---|
= |
teng |
<> yoki != |
teng emas |
> |
katta |
< |
kichik |
>= |
katta yoki teng |
<= |
kichik yoki teng |
Matn bo’yicha filtrlash misoli:
SELECT * FROM mahsulotlar WHERE nom = 'Non';
Natija — faqat Non qatori:
| id | nom | narx | soni | turi |
|---|---|---|---|---|
| 2 | Non | 3000 | 120 | non |
AND va OR — bir nechta shart
Bir nechta shartni birlashtirish uchun AND (ikkalasi ham) va
OR (kamida bittasi) ishlatiladi:
SELECT nom FROM mahsulotlar WHERE narx > 5000 AND soni > 40;
Bu — narxi 5000 dan qimmat va soni 40 dan ko’p bo’lganlar. Ikkala shart ham bajarilishi kerak:
| nom |
|---|
| Olma |
| Guruch |
Olma (8000, 50) va Guruch (18000, 60) ikkala shartga mos. Sut narxi
mos, lekin soni 30 — AND uchun ikkalasi kerak, shuning uchun tushib qoldi.
OR bilan yetarli bitta shart:
SELECT nom FROM mahsulotlar WHERE narx < 5000 OR soni > 100;
Natija — narxi arzon yoki soni ko’p bo’lganlar:
| nom |
|---|
| Non |
| Suv |
Non (narxi 3000) va Suv (soni 200 va narxi 4000) — har biri kamida bitta shartga mos.
Amaliy mashq
Qatorlarni filtrlang:
- Narxi 10000 dan arzon mahsulotlarni toping;
turiustuni'meva'bo’lganlarini chiqaring;ANDbilan ikki shartni birlashtiring: meva va narxi 10000 dan qimmat;ORbilan yozing: narxi juda arzon (< 4000) yoki juda qimmat (> 15000);soni = 0bo’lgan mahsulotni toping.
3-qadamdagi AND ni OR ga almashtiring — natija nechta qatorga o’zgardi?
Qisqacha xulosa
WHERE shart— faqat shartga mos qatorlarni qaytaradi;FROMdan keyin.- Taqqoslash:
=(teng, bitta belgi),<>,>,<,>=,<=. - Matn qiymati bitta tirnoq ichida:
'Olma'. AND— ikkala shart ham,OR— kamida bittasi,NOT— teskari.- Bir nechta shartni birlashtirib murakkab filtr yasash mumkin.
Keyingi darsda ORDER BY va LIMIT bilan natijani
tartiblash va cheklashni ko’ramiz — masalan “eng qimmat 3 mahsulot”.