Ma`lumotlar : 1091
Xabarlar soni: 197
Bugun: 4.3.2021
Soat: 15:32
Sql da mantiqiy operatorlar
Muallif: Mengliyev Sh.
Qo`shilgan sana: 2015-08-20
Sql da mantiqiy operatorlar
BETWEEN va IN Operatorlari
BETWEEN ifodasi bu qiymatlar diapazoniga tegishlilikni tekshirishdir. Ifoda sintaksisi quyidagicha:
--- tekshirilayotgan ifoda ------- BETWEEN ----- quyi ifoda AND yuqori ifoda
- NOT -
NOT ifodasi shartni teskarisiga o‘giradi,ya’ni tegishli emas ma’noni bildiradi.
Misol: Narxi xar xil diapazonga mos keluvchi buyurtmalarni topish.
SELECT ORDER_NUM, AMOUNT
FROM ORDERS
WHERE AMOUNT BETWEEN 20.000 AND 29.999
NOT ifodasi yordamida berilgan diapazonga tegishlilikni tekshirish mumkin, masalan: Sotuvlar xaqiqiy xajmlari rejaning 80 dan 120 protsentigacha bo‘lgan diapazonga tushmaydigan xizmatchilar ro‘yxatini chiqarish.
SELECT NAME, SALES, QUOTA
FROM SALESREPS
WHERE SALES NOT BETWEEN (0.8 * QUOTA) AND (1.2 * QUOTA)
Ifoda IN to‘plamga tegishlilikni tekshiradi. Komanda sintaksisi quyidagicha:
--- tekshirilayotgan ifoda ------- IN ----- (-- const -----------)
- NOT - -- , ---------------
1990 yil iyun oyining xar xil kunlarida qilingan xamma buyurtmalarni aniqlash.
SELECT ORDER_NUM, ORDER_DATE, AMOUNT
FROM ORDERS
WHERE ORDER_DATE IN (TO_DATE('14.06.1990','DD/MM/YYYY'), TO_DATE('08.06.1990','DD/MM/YYYY'),TO_DATE('29.06.1990','DD/MM/YYYY'), TO_DATE('04.06.1990','DD/MM/YYYY'))
Sanalar bilan shu tarzda ishlanadi.
To‘rtta konkret xizmatchilar tomonidan olingan xamma buyurtmalarni aniqlash.
SELECT ORDER_NUM, REP, AMOUNT
FROM ORDERS
WHERE REP IN (107, 109, 101, 103)
NOT IN yordamida diapazonga "tegishli emaslikni " tekshirish mumkin.
Operator LIKE
LIKE ifodasi sintaksisi SQL92 standarti bo‘yicha quyidagi ko‘rinishga ega:
--- IMYA STOLBSA --------- LIKE (shablon) -----------------------------------
NOT ESCAPE (o‘tkazish nomi)
Sodda so‘rov bajaramiz: "Apelьsin" kompaniyasi uchun kredit limitini ko‘rsatish:
SELECT COMPANY, CREDIT_LIMIT
FROM CUSTOMERS
WHERE COMPANY = 'Apelьsin'
Quyidagicha '%' shablonli LIKE operatorini qo‘llaymiz:
SELECT COMPANY, CREDIT_LIMIT
FROM CUSTOMERS
WHERE COMPANY LIKE '%n'
Bu xolda LIKE '%n' operatori 'n' xarfiga tugaydigan xamma yozuvlarni ko‘rsatadi, agar '%' shabloni birinchi kelsa:
SELECT COMPANY, CREDIT_LIMIT
FROM CUSTOMERS
WHERE COMPANY LIKE '%gan'
Ba’zida '%' shabloni o‘rniga '*' belgisi qo‘llanadi znak, masalan v MS SQL uchun, c:\>dir *.exe!
Agar faqat bitta simvol ixtiyoriy bo‘lsa '_'! shabloni qo‘llanadi. Masalan:
SELECT COMPANY, CREDIT_LIMIT
FROM CUSTOMERS
WHERE COMPANY LIKE 'Ap_lьsin'
Operator IS NULL
SELECT operatori uchun NULL qiymati bilan ishlash qoidalarini ko‘ramiz. Konkret misol ko‘ramiz:
Xali ofisga biriktirilmagan xizmatchini topish:
SELECT NAME FROM SALESREPS
WHERE REP_OFFICE = NULL
SQL quyidagi satrni uchratganda:
REP_OFFICE = NULL
Quyidagi shartni tekshiradi:
NULL = NULL
Bunday tekshirish yana NULL qaytaradi!!! Qiymat tekshiruvchi operator uchun agar natija TRUE bo‘lmasa, satr natijaviy to‘plamga kirmaydi!!! Lekin bunday satrlar aslida mavjuddir!!! Bu holda NULL qiymatiga tekshirish to‘g‘ri operatorini qo‘llash lozim:
------------ ustunning nomi IS ---------- NULL ------------------------------
NOT
Qo‘llaymiz:Ofisga biriktirilmagan xizmatchini toping.
SELECT NAME FROM SALESREPS
WHERE REP_OFFICE IS NULL
NOT shartini qo‘llash mumkin: Ofisga biriktirilgan xamma xizmatchilarni toping.
SELECT NAME FROM SALESREPS
WHERE REP_OFFICE IS NOT NULL
WHERE shartida qo‘shma operatorlar
Izlashning "qo‘shma" shartlarini ko‘rib chiqamiz. WHERE operatorida OR, AND, NOT operatorlari bilan bog‘langan bir necha izlash shartlarini qo‘llash mumkin. Bu operatorlar sintaksisi quyidagicha:
NOT, OR, AND operatorlarning sintaksisi.
(-------- WHERE ----------- SHART -----------------)
(--- NOT ---)
(-------- AND -------------------------)
(-------- OR --------------------------)
Bu operatorlar yordamida yaratilgan bir necha so‘rovlarni ko‘rib chiqamiz.
Masalan: Sotuvlari xaqiqiy xajmi rejadagidan yoki $300.00 dan kam bo‘lgan xizmatchilarni aniqlash
SELECT NAME, QUOTA, SALES
FROM SALESREPS
WHERE SALES < QUOTA OR SALES < 300.0
Sotuvlari xaqiqiy xajmi rejadagidan va $300.00 dan kam bo‘lgan xizmatchilarni aniqlash
SELECT NAME, QUOTA, SALES
FROM SALESREPS
WHERE SALES < QUOTA AND SALES < 300.0
Sotuvlari xaqiqiy xajmi rejadagidan kam, lekin $150.00 dan ko‘p bo‘lgan xizmatchilarni aniqlash
SELECT NAME, QUOTA, SALES
FROM SALESREPS
WHERE (SALES < QUOTA) AND (NOT SALES > 150.000)
AND ifodasi algebrasi.
Qiymat Natija
-------------- ----------
TRUE AND TRUE -> TRUE
FALSE AND TRUE -> FALSE
TRUE AND FALSE -> FALSE
FALSE AND FALSE -> FALSE
NULL AND TRUE -> NULL
TRUE AND NULL -> NULL
FALSE AND NULL -> FALSE
NULL AND FALSE -> FALSE
NULL AND NULL -> NULL
OR ifodasi algebrasi.
Qiymat Natija
-------------- ----------
TRUE OR TRUE -> TRUE
FALSE OR TRUE -> TRUE
TRUE OR FALSE -> TRUE
FALSE OR FALSE -> FALSE
NULL OR TRUE -> TRUE
TRUE OR NULL -> TRUE
FALSE OR NULL -> NULL
NULL OR FALSE -> NULL
NULL OR NULL -> NULL
NOT ifodasi algebrasi.
Qiymat Natija
-------------- ----------
NOT TRUE -> FALSE
NOT FALSE -> TRUE
NOT NULL -> NULL
Qo‘shma izlash operatorlarining xar biri o‘z ustivorligiga ega. Eng yuqori ustivorlik NOT ga tegishli, undan so‘ng AND va oxirida OR!
SQL92 standartida IS operatori yordamida ifoda rost, yolg‘on yoki aniqlanmaganligini tekshirish mumkin. Uning sintaksisi quyidagicha:
IS operatori sintaksisi
--------- Solishtirish ---------- IS (------ TRUE ---------------)
(------ FALSE --------------)
--- Mantiqiy ifoda --- (------ UNKNOWN ------------)
Masalan quyidagicha yozish mumkin: ((SALES - QUOTA) > 100.000) IS UNKNOWN . Bunday shart SALES yoki QUOTA ustunlari NULL qiymatga ega satrlarni izlashga imkon beradi.
YOzuvlarni tartiblash, ORDER BY jumlasi
Oldin ko‘rilgan so‘rovlarda natijalar ixtiyoriy tartibda olingan edi. Agar o‘quvchilar ro‘yxatini alfavit tartibida yoki tovarlar narxini kamayish tartibida chiqarish zarur bo‘lsachi? Buning uchun SELECT operatori tarkibida ORDER BY ifodasi ko‘zda tutilgan. Uning sintaksisi:
------- ORDER BY – usutun nomi ---------------- -------------------------------- .
-- ustun tartib raqami --- -------- ASC ----------
-------- DESC ----------
------------------------- , -----------------------------------
Avval quyidagi misolni ko‘ramiz: Xar bir ofis uchun sotuvlar xaqiqiy xajmlarini regionlar nomlari, xar bir regionda esa shaxarlar nomlari bo‘yicha alfavit tartibida ko‘rsatish.
SELECT CITY, REGION, SALES
FROM OFFICES
ORDER BY REGION, CITY
ORDER BY ifodasidan keyin kelgan ustun ASOSIY kalitdir, undan keyingi ustunlar ikkinchi darajali kalitlardir. YOzuvlarni o‘sish xamda kamayish bo‘yicha tartiblash mumkin.
Masalan: Sotuvlari xaqiqiy xajmlari kamayish tartibida ofislar ro‘yxatini chiqarish.
SELECT CITY, REGION, SALES
FROM OFFICES
ORDER BY SALES DESC
Sotuvlar xajmlarini DESC predikatini qo‘llab kamayish tartibida chiqaramiz. O‘sish tartibida chiqarish uchun ASC predikati qo‘llanadi. Bu predikat ko‘zda tutilgan bo‘lib, uni ko‘rsatish sharrt emas. Agar ustun xisoblanuvchi bo‘lib, nomga ega bo‘lmasa uning tartib nomerini ko‘rsatish mumkin!
Masalan, quyidagicha: Sotuvlar xaqiqiy va rejadagi xajmlari ayirmasi kamayish tartibida ofislar ro‘yxatini chiqaring.
SELECT CITY, REGION, (SALES - TARGET)
FROM OFFICES
ORDER BY 3 DESC
SHu kabi ORDER BY ifodasida ustunlar nomlari va nomerlari, xamda DESC, ASC predikatlarini qo‘llab murakkab tartiblash shartlarini xosil qilish mumkin.
Masalan: Regionlar nomlari, xar bir regionda sotuvlar xaqiqiy va rejadagi xajmlari ayirmasi kamayish tartibida ofislar ro‘yxatini chiqaring.
SELECT CITY, REGION, (SALES - TARGET)
FROM OFFICES
ORDER BY REGION ASC, 3 DESC
4368 marta o`qildi.
![]() |
![]() |