id_st
|
Surname
|
|
id_ex
|
Subject
|
Date
|
|
id_ex
|
id_st
|
mark
|
1
|
Xasanov
|
|
1
|
Matem
|
10.05.2020
|
|
2
|
2
|
3
|
2
|
Karimov
|
|
2
|
Fizika
|
|
|
3
|
1
|
2
|
3
|
Jabborov
|
|
3
|
Informatika
|
25.05.2020
|
|
1
|
1
|
4
|
|
|
|
|
|
|
|
3
|
2
|
5
|
|
|
|
|
|
|
|
2
|
1
|
3
|
|
|
|
|
|
|
|
1
|
2
|
2
|
|
|
|
|
|
|
|
2
|
3
|
4
|
|
|
|
|
|
|
|
1
|
3
|
5
|
|
|
|
|
|
|
|
3
|
3
|
3
|
Endi SQL so`rovlari oddiydan boshlab tuzishga misollar qaraladi.
student jadvalidan barcha studentlar ro`yxatini tasvirlash.
SELECT * FROM student
yoki
SELECT id_st, surname FROM student
Yuqoridagi so`rovga ORDER BY surname ifodasi qo`shilsa, u holda ro`yxat familiya bo`yicha tartiblanadi. Jimlikka ko`ra tartiblash o`sish bo`yicha bajariladi. Jimlik o`rniga ASC so`zi ishlatiladi.
Ms: student jadvalidan barcha studentlar ro`yxatini tartiblab tasvirlash.
SELECT * FROM student
ORDER BY surname
Agar kamayish bo`yicha tartiblash kerak bo`lsa, u holda oxirgi ifodadagi atribut nomidan keyin DESC so`zi qo`shiladi.
SELECT * FROM student
ORDER BY DESC surname
Alias qo`yish. Natijaviy jadval maydon nomlarini o`zgartirishda AS so`zidan foydalaniladi.
SELECT id_st AS KOD, surname AS ‘FIO talaba`
FROM student
Eslatma. Agar aliasdagi maskalanuvchi matn bir nechta so`zdan iborat bo`lsa, ya`ni ular orasida probel bo`lsa, bu maska matni tirnoqchaga olinadi. Aks holda tirnoqchaga olish shart emas. So`rov natijasida qo`yidagicha bo`ladi.
KOD
|
FIO talaba
|
1
|
Xasanov
|
2
|
Karimov
|
3
|
Jabborov
|
WHERE so`zidan keyin solishtirish amallarini (<, >, =, <> va x.k.) va mantiqiy operatorlar qatnashgan ifodalarni joylashtirish mumkin.
«1» kodli student olgan baholar ro`yxatini tanlab olish va tasvirlash
SELECT id_st, mark
FROM mark_st
WHERE id_st = 1
SQL tilida bir nechta shartlarni birgalikda bajarilishi uchun AND, OR va NOT kabi mantiqiy operatorlar ishlatiladi.
AND – mantiqiy “hamda”, “va” ma`nosini beradi. Ikki shart orasiga qo`yiladi (shart1 AND shart2). Ifoda True bo`lishi uchun ikkala shart ham rost bo`lishi kerak.
OR – mantiqiy “yoki” ma`nosini beradi. Ikki shart orasiga qo`yiladi (shart1 AND shart2). Ifoda True bo`lishi uchun ikki shartdan birortasi rost bo`lishi kerak.
NOT – bekorlash, emas ma`nosini beradi (invert shart). Mantiqiy ifoda True (False) bo`lganda unga teskari bo`lgan False (True) qiymatlarni qaytaradi (NOT mantiqiy ifoda). Har bir mantiqiy operator uchun “haqiqat” jadvalini ishlab chiqsh mumkin. Bunda qiymat NULL bo`lganda natija qanday bo`lishiga qarab qo`shimcha shart beriladi.
|
AND
|
|
|
OR
|
|
NOT
|
|
True
|
False
|
NULL
|
|
|
True
|
False
|
NULL
|
|
True
|
False
|
NULL
|
True
|
True
|
False
|
NULL
|
|
True
|
True
|
True
|
True
|
|
False
|
True
|
NULL
|
False
|
False
|
False
|
False
|
|
False
|
True
|
False
|
False
|
|
|
|
|
NULL
|
NULL
|
False
|
NULL
|
|
NULL
|
True
|
False
|
NULL
|
|
|
|
|
Shuningdek, SQL so`rovida atributning NULL qiymatlari va NULL ifodalar bilan ham ishlash mumkin. Bunda IS NOT NULL (NULL ekanligi) va NOT NULL (NULL emasligi) operatorlari mavjud.
Mantiqiy operatorlarning bajarilishi jihatdan ularning ustivoligi quyidagicha belgilanadi:
barcha mantiqiy ifoda qiymati hisoblanadi (True yoki False);
NOT;
AND;
OR.
Imtixonlarda 2 yoki 3 baho olgan studentlar kodini tanlab olish.
SELECT id_st, mark
FROM mark_st
WHERE mark >= 2 AND mark <= 3
Imtixonlarda 2 yoki 3 baho olmagan studentlar kodini tanlab olish.
SELECT id_st, mark
FROM mark_st
WHERE NOT(mark = 2 OR mark = 3)
SQL tilida shart ifodalarini tuzish uchun solishtirish va mantiqiy operatorlardan tashqari yana bir qator maxsus operatorlar qo`llaniladi. Bu operatorlar dasturlash tillarida mavjud emas. Bu operatorlar:
BETWEEN –qiymatlar diapozoniga tegishliligini tekshirish;
LIKE – namuna bilan mosligini tekshirish;
IS NULL – qiymat mavjudmasligini tekshirish;
IN – biror qiymatlar to`plamiga tegishliligini tekshirish;
ANY –qiymatlar to`plamiga tegishliligini shart asosida tekshirish;
ALL –qiymatlar to`plamiga to`liq tegishliligini tekshirish;
EXISTS - qism so`rovdan natija qaytarilishini tekshiradi.
Endi ushbu peredikatlarga batafsil to`xtalib o`tiladi.
BERWEEN peridikati maydon kiymatini berilgan intervalga kirganligini tekshirish uchun ishlatiladi.
Yukoridagi natijani BETWEEN operatoridan foydalanib olish mumkin:
SELECT id_st, mark
FROM mark_st
WHERE mark BETWEEN 2 AND 3
Birorta ham 2, 3 olmagan talaba haqidagi ma`lumotlar olish uchun NOT IN yoki NOT BERWEEN orqali yoziladi.
LIKE peridikati faqat simvolli maydonlar uchun qo`llaniladi va maydon qiymati operatorda ko`rsatilgan namunaga mosligini tekshirish imkonini yaratadi.
Namuna quyidagi maxsus simvollardan tashkil topadi:
_ (tagiga chizish belgisi) – bitta ixtiyoriy simvolni bildiradi;
% (foiz belgisi) – ixtiyoriy miqdordagi simvollar ketma – ketligini bildiradi.
Shablon
|
Tasnif
|
‘abc%`
|
"abc" xarflar bilan boshlanuvchi ixtiyoriy kator.
|
‘abc_`
|
"abc" xarflar bilan boshlanuvchi va uzunligi 4 simvolli ixtiyoriy kator
|
‘%z`
|
"z" xarfi bilan yakunlanuvchi ixtiyoriy kator.
|
‘%mos%`
|
"mos" so`zi qatorning ixtiyoriy joyida keluvchiqkator.
|
Misol: Familiyalari A xarfi bilan boshlanuvchi studentlar ro`yxatini tanlab olish.
SELECT id_st, surname
FROM student
WHERE surname LIKE ‘A%`
Jadval atribut(lar)i qiymati mavjud (emas)ligini tekshirishda NOT NULL va IS NOT NULL operatorlar mavjud.
Misol. Imtixon sanasi ma`lum fanlar ro`yxatini chiqarish.
SELECT id_st, mark
FROM mark_st
WHERE Date NOT NULL
Misol. Imtixon sanasi noma`lum fanlar ro`yxatini chiqarish.
SELECT id_st, mark
FROM mark_st
WHERE Date IS NOT NULL
IN peridikati biror qiymatlar to`plamiga tegishlilikni tekshirish uchun ishlatiladi.
IN peridikatining sintaksisi:
SELECT [ustunlar... | hisoblashlar ]
FROM [jadval_nomi]
{WHERE | HAVING | {AND | OR}} value [NOT]
IN ({a11, a2 [, ...] | qism so`rov});
IN peridikatini oldida NOT kalit so`zini qo`llanilishi uning shartni tekshirilishin teskarisini beradi.
Ekzamenlarda kamida bitta 2 yoki 3 baho olgan studentlarni identifikatorini tanlab chikarish so`rovi.
SELECT id_st, mark
FROM mark_st
WHERE mark IN (2,3)
ANY (SOME), ALL peridikatlari ham IN kabi vazifani bajarib, lekin ularning imkoniyati IN dan kattaroq hisoblanadi. Bu peridikatlar WHERE yoki HAVING bo`limida berilgan qiymat(lar) bilan predikatdagi to`plam orasida taqqoslash operatori (=, <>, !=, >, >=, <, yoki <=) orqali ishlatiladi. Shuningdek, peridikatlar TRUE yoki FALSE (rost yoki yolg`on) qiymat qaytaradi.
ANY, ALL peridikatlari qism so`rovlarda ham ishlatiladi.
ANY, ALL, SOME peridikatlarini sintaksislari o`xash:
SELECT [ustunlar... | hisoblashlar ]
FROM [jadval_nomi]
WHERE ifoda shart_operatori {ALL | ANY | SOME} ( qism so`rov)
Misol uchun bizga (20, 56, 5, 15, 69, 10) to`plam berilgan bo`lib, uning eng katta elementi 5, eng kichik elementi 69 ga teng.
ANY peredikatida shartni qanoatlandiruvchi xech bo`lmaganda bitta element bor bo`lsa, rost hisoblanadi.
…WHERE 70 > ANY(20, 56, 5, 15, 69, 10) // Natija TRUE
…WHERE 70 < ANY(20, 56, 5, 15, 69, 10) // Natija FALSE
…WHERE 4 > ANY(20, 56, 5, 15, 69, 10) // Natija FALSE
…WHERE 4 < ANY(20, 56, 5, 15, 69, 10) // Natija TRUE
ALL peridikati esa ANY perikatiga o`xshash bo`lib, unda to`plamga tegishli barcha element peredikat bilan ifodani o`rtasidagi shartni qanoatlandirishi lozim.
…WHERE 70 > ALL(20, 56, 5, 15, 69, 10) // Natija TRUE
…WHERE 70 < ALL(20, 56, 5, 15, 69, 10) // Natija FALSE
…WHERE 4 > ALL(20, 56, 5, 15, 69, 10) // Natija FALSE
…WHERE 4 < ALL(20, 56, 5, 15, 69, 10) // Natija TRUE
ANY (SOME) va ALL peridikatlari oldida NOT kalit so`zini foydalanish mumkin.
EXISTS peridikati faqat qism so`rovlarda qo`llaniladi. Uning oldida taqqoslash operatorlari ishlatilmaydi.
Quyi so`rov hech bo`lmaganda bitta natija qaytarsa EXISTS operatori TRUE qiymatni qaytaradi aks holda ya`ni quyi so`rov natija qaytarmasa FALSE qiymatni qaytaradi.
EXISTS peridikatini sintaksisi quyidagicha:
SELECT [column_name... | expression1 ]
FROM [table_name]
WHERE [NOT] EXISTS (subquery)
Amaliyotda IN, ANY (SOME), ALL va EXISTS peridikatlari ko`pchilik hollarda qism so`rovlar yaratishda ishlatilishi sababli, bu peredikatlarga qism so`rovlar paragrafida batafsil misollar orqali to`xtalib ztiladi.
|