linkedin facebook linkedin facebook nod32

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

746 marta o`qildi.

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений