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:

SQL · namuna baza

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:

  1. Narxi 10000 dan arzon mahsulotlarni toping;
  2. turi ustuni 'meva' bo’lganlarini chiqaring;
  3. AND bilan ikki shartni birlashtiring: meva va narxi 10000 dan qimmat;
  4. OR bilan yozing: narxi juda arzon (< 4000) yoki juda qimmat (> 15000);
  5. soni = 0 bo’lgan mahsulotni toping.

3-qadamdagi AND ni OR ga almashtiring — natija nechta qatorga o’zgardi?

Qisqacha xulosa

  • WHERE shart — faqat shartga mos qatorlarni qaytaradi; FROM dan 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”.

Bu dars foydali bo'ldimi?

marta ko'rildi