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:

SQL · namuna baza

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'v bilan tugaydigan: Suv
  • '%a%' — ichida a bor: 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:

  1. BETWEEN bilan narxi 8000-13000 oralig’idagilarni toping;
  2. IN bilan 'meva' va 'ichimlik' turlarini birga oling;
  3. LIKE 'S%' bilan S harfidan boshlanadiganlarni toping;
  4. LIKE '%t%' bilan ichida t bor nomlarni toping;
  5. NOT IN bilan meva bo’lmaganlarni chiqaring.

BETWEEN 8000 AND 13000 chegaralarni o’z ichiga oladimi? Sinab tekshiring.

Qisqacha xulosa

  • BETWEEN a AND ba va b oralig’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/OR bilan boshqa shartlarga qo’shiladi.
  • Uchalasi ham WHERE ni 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.

Bu dars foydali bo'ldimi?

marta ko'rildi