Oldingi darsda biz SELECT bilan jadvaldagi barcha qatorlarni oldik. Lekin ko'pincha bizga hamma qator emas, faqat biror shartni qanoatlantirgan qatorlar kerak bo'ladi. Masalan, "faqat qimmat mahsulotlar" yoki "faqat omborda kam qolgan mahsulotlar".
Mana shu filtrlash ishini WHERE kalit so'zi bajaradi.
Misollarni mahsulotlar jadvalida ko'rib chiqamiz:
| id | nomi | kategoriya | narx | ombor |
|---|---|---|---|---|
| 1 | Telefon | Elektronika | 5000000 | 10 |
| 2 | Noutbuk | Elektronika | 12000000 | 5 |
| 3 | Quloqchin | Elektronika | 300000 | 50 |
| 4 | Kitob | Kitoblar | 50000 | 100 |
| 5 | Daftar | Kanstovar | 8000 | 200 |
| 6 | Ruchka | Kanstovar | 3000 | 500 |
| 7 | Stol | Mebel | 800000 | 15 |
| 8 | Stul | Mebel | 250000 | 40 |
WHERE FROM dan keyin yoziladi va undan keyin shart keladi. So'rov faqat shu shartni qanoatlantirgan qatorlarni qaytaradi.
Masalan, narxi aniq 300000 ga teng mahsulotlarni topamiz:
SELECT nomi, narx FROM mahsulotlar WHERE narx = 300000;Natija:
Quloqchin|300000Bu yerda narx = 300000 — bu shart. Jadvaldagi har bir qator uchun ma'lumotlar bazasi bu shartni tekshiradi: agar to'g'ri bo'lsa — qator natijaga tushadi, aks holda — tushmaydi.
Eslatma: SQL da tenglikni tekshirish uchun bitta teng belgisi (
=) ishlatiladi, Python dagi==emas.
= dan tashqari yana bir nechta taqqoslash operatorlari bor. Ular sonlarni (va matnlarni) bir-biri bilan solishtiradi:
| Operator | Ma'nosi | Misol |
|---|---|---|
= | teng | narx = 8000 |
<> | teng emas | narx <> 8000 |
< | kichik | narx < 8000 |
> | katta | narx > 8000 |
<= | kichik yoki teng | narx <= 8000 |
>= | katta yoki teng | narx >= 8000 |
Misol uchun, narxi 1000000 dan katta mahsulotlarni topamiz:
SELECT nomi, narx FROM mahsulotlar WHERE narx > 1000000;Natija:
Telefon|5000000
Noutbuk|12000000Ombori 10 dan kam mahsulotlar (ya'ni tugab borayotganlar):
SELECT nomi, ombor FROM mahsulotlar WHERE ombor < 10;Natija:
Noutbuk|5Telefondan boshqa (teng emas) barcha mahsulotlarning nomini olish uchun <> ishlatamiz:
SELECT nomi FROM mahsulotlar WHERE nomi <> 'Telefon';Muhim: Matn (TEXT) qiymatlarini bitta tirnoq (
') ichida yozish kerak:'Telefon'. Sonlarni esa tirnoqsiz yozamiz:5000000.
WHERE qatorlarni tanlaydi, ORDER BY esa ularni tartiblaydi. Ularni bir so'rovda ishlatish mumkin — bunda avval WHERE, keyin ORDER BY yoziladi.
Narxi 300000 dan katta yoki teng mahsulotlarni narx bo'yicha o'sish tartibida chiqaramiz:
SELECT nomi, narx FROM mahsulotlar WHERE narx >= 300000 ORDER BY narx;Natija:
Quloqchin|300000
Stol|800000
Telefon|5000000
Noutbuk|12000000Muhim: Bir nechta qator qaytsa, tartib aniq bo'lishi uchun doimo
ORDER BYqo'shing — aks holda ma'lumotlar bazasi qatorlarni istalgan tartibda qaytarishi mumkin.
Pastdagi kod oynasida mahsulotlar jadvali allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — narxi 800000 dan kam bo'lmagan (ya'ni 800000 yoki undan qimmat) mahsulotlarning nomi va narxini, narx bo'yicha o'sish tartibida chiqaruvchi SELECT so'rovini yozish.