O'ZBЕKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA
KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKЕNT AXBOROT TЕXNOLOGIYALARI UNIVЕRSITЕTI
KOMPYUTER INJINIRINGI FAKULTETI
Axborot texnologiyalari kafedrasi
MA’LUMOTLAR BAZASI
fanidan laboratoriya ishlari bo'yicha
USLUBIY KO'RSATMA
Toshkent- 2022
1
Mualliflar: Usmonov J.T., Qosimova U., Pulatova Z. M., Abidova F.Sh.,
“Ma’lumotlar bazasi” . Uslubiy qo`llanma. - Toshkent: TATU.2020. - b.
Ushbu uslubiy ko`rsatmada “Ma’lumotlar bazasi”
fanidan laboratoriya
mashg’ulotlarini bajarish ketma-ketligi keltirilgan. Laboratoriya mashg`ulotlarida
ma’lumotlar bazasini tashkil etuvchilarining xususiyatlarini o`rganish va olingan
bilimlar bo`yicha topshiriqlar jamlanmasidan iborat.
Uslubiy ko`rsatmada berilgan topshiriqlarni bajarish ushun MySQL va Php
dasturlash tillarida bajarilgan. Bundan tashqari talabalar bilimlarini mustahkamlash
uchun mashqlar va nazorat savollari berilgan
Uslubiy ko`rsatma 5330500- Komp'yuter injiniring (“Komp'yuter injiniringi”,
“AT-Servis”, “Mul'timediya texnologiyalari”), 5330600 – Dasturiy injiniring,
5350100 – Telekommunikasiya texnologiyalari (“Telekommunikasiyalar”,
“Teleradioeshittirish”, “Mobil' tizimlar”), 5330300 – Axborot xavfsizligi (Axborot,
kommunikasiya texnologiyalari va servis), 5350200 – Televizion texnologiyalar
(“Audiovizual texnologiyalari”, “Telestudiya tizimlari va ilovalari”), 5350300 – AKT
sohasida iqtisodiyot va menejment, 5350600 – AKT sohasida iqtisodiyot va
menejment, 5350600 – Pochta aloqasi texnologiyasi, 5350400 – AKT sohasida kasbiy
ta'lim, 5350500 – Axborotlashtirish va kutubxonashunoslik bakalavr yo`nalishida
tahsil oluvchi talabalari uchun moljallangan.
Uslubiy ko`rsatma Muhammad al-Xorazmiy nomidagi Toshkent axborot
texnologiyalari universiteti ilmiy-uslubiy kengashi majlisida ko`rib chiqilgan va chop
etishga ruxsat etildi. (2020 yil “_____” “________________” “____” – sonli
bayonnoma)
Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalari
universiteti, 2020 yil.
2
MUNDARIJA
Kirish…………………………………………………………………..
4
1.
Ma’lumotlar bazasini loyihalash, mohiyat – aloqa diagrammasini
6
2.
qurish.
Rеlyatsion ma’lumotlar bazasini loyihalash.
12
3.
SQL tilida jadvallar yaratish, o‘zgartirish va o‘chirish.
16
4.
Ma’lumotlarni tanlash va ular ustida amallar.
22
5.
6.
7.
8.
9.
AND, OR, NOT mantiqiy stanndart so‘zlardan foydalanish.
26
Ma’lumotlarni saralash. Where standart so‘zidan foydalanish.
31
Group by va Order by standart so‘zlaridan foydalanib so‘rov yaratish. 42
Having standart so‘zi orqali so‘rovlar yaratish.
46
Union, Intersect va Minus standart so‘zidan foydalanish.
50
10. Standart funksiyalardan foydalanib so‘rovlar yaratish.
11. Agrеgat funksiyalardan foydalanish.
58
64
12. Bir nеchta jadvallar birlashtirish, «Join» lar bilan ishlash.
13. Murakkab so‘rovlar yaratish.
74
81
14. SQL tilida INDEX yaratish.
84
15. Tasavvur, VIEW yaratish va undan foydalanish.
16. SQLda funksiyalar yaratish.
90
93
17. SQLda triggеrlar yaratish
18. C++ va ma’lumotlar bazasi yordamida oddiy intеrfеys yaratish.
98
107
19. C++ da ADO va ODBC dan foydalanib qatorlarga ma’lumot kiritish,
117
o‘zgartirish va o‘chirish.
20. C++da Windows Form Data Controldan foydalanish.
125
21. Laboratoriya ishlarini bajarishga topshiriq variantlari
129
22. Foydalanilgan adabiyotlar
0130
23. 1-ilova
132
24. 2-ilova
133
3
KIRISH
Hozirgi kunda inson faoliyatida ma’lumotlar bazasi (MB) kerakli axborotlarni
to’plash, saqlash va qayta ishlashda muhim o’rin tutmoqda. Chunki jamiyat ishlab
chiqarishining qaysi jabhasiga nazar solmaylik o’zimizga kerakli ma’lumotlarni olish
uchun, albatta, MBga murojaat qilishga majbur bo’layapmiz. Shuning uchun ham
MB bilan muloqot qilish axborot almashinuv texnologiyasining eng dolzarb
muammolaridan biriga aylanib borishi hozirgi davr taqozosidir.
Axborot texnologiyalarining taraqqiyoti va axborot oqimlarining tobora ortib
borishi insoniyatni ma’lumotlarni o’z vaqtida qayta ishlash choralarining yangi
uslublarini qidirib topishga majbur qilmoqda. Ma’lumotlarni saqlash, uzatish va qayta
ishlash uchun MBni yaratish, so’ngra undan oqilona foydalanish bugungi kunning
dolzarb masalalaridan biriga aylandi.
Shuni ham e’tiborga olish kerakki, mа’lumоtlаr bаzаsi dasturiy mahsulotlari
rivojlanishi vaqt o’tishi bilan tоbоrа standartlashib bоrmоqdа. Bu jаrаyon har хil
kоmpyuter muhitlаridа fаоliyat ko‘rsаtuvchi ахbоrоt tizimlаrini yarаtishdа yagоnа
stаndаrt til yarаtish zaruriyatini keltirib chiqardi. Stаndаrt til bir buyruqlar to‘plаmini
bilgаn fоydаlаnuvchilаrgа ulаrni shахsiy kompyuter, tаrmоq avtomatlashtirilgan
ishchi joyi (AIJ) yoki katta EHMdа ishlаshlаridаn qаt’iy nаzаr mа’lumоtlarni yig’ish,
saqlash, izlаsh vа uzаtishgа imkоn berаdi. Ana shunday standart tillardan biri SQL
tilidir.
SQL(Structured Query Language) so'rov tili ko'p operatorlardan tashkil topgan
bo'lib, bu operatorlar orqali foydalanuvchilar va dasturlar Oracle(MBBT) dagi
ma'lumotlar bazasiga murojaatni amalga oshirishi mumkin. Oracle utilitalari yoki har
xil dasturlar SQL operatorlarisiz bazaga murojaatni amalga oshirishi mumkin, lekin
so'rovlarni amalga oshirishda bu so'rov tilidan foydalanmaslikning iloji yo'q.
1970 yil iyun oyida E. F. KODD o'zining E.F. Codd, "A Relational Model of
Data for Large Shared Data Banks" maqolasini ommaga taqdim etdi. Bu
4
maqola "Communications of the ACM" jurnalida chop etildi. Hozirgi kunda
Koddning
bu
modeli
"relyastion
ma'lumotlar
bazasini
boshqarish
tizimi(RMBBT)" ning yakuniy modeli deb qabul qilindi. Kodd ning modelni yo'lga
qo'yish maqsadida IBM firmasi SEQUEL(Structured English Query Language) tilini
ishlab chiqdi. Keyinchalik bu til SQL tiliga o'zgartirildi, lekin haligacha "sikvel" deb
ham
yuritilmoqda.
1979
yil Relational
Software(hozirgi
vaqtdagi
Oracle)
korporatsiyasi SQL ning birinchi tijoriy ishlanmasini ommaga taqdim etdi. Hozirgi
kunda SQL tili RMBBTning standart tili hisoblanadi.
SQL tili so'rov-natija ko'rinishida ishlaydi. So'rovlar har bir element uchun emas,
butun bir guruh uchun beriladi va natija olinadi. SQL uchun ma'lumotlar bazasidagi
ma'lumotlar qay shaklda, qay tartibda joylashganini umuman ahamiyati yo'q,
foydalanuvchilar ham bu ma'lumotlarni bilishi shart emas. Faqatgina operatorlarni
to'g'ri yozish orqali istalgan ma'lumotlarni chiqarish mumkin bo'ladi.
SQL tili barcha ma'lumotlar bazasini boshqarish tizimlari uchun umumiy standart
til hisoblanadi. Bundan kelib chiqadiki, agar siz bu tilni bir marotaba o'rganib
olsangiz, istalgan MBBT lari bilan ishlay olasiz. Bitta MBBT da yaratilgan biror sql
operatorlar yig'indisi(kichik so'rov dasturi)ni, istalgan MBBT ga ko'chirish mumkin
bo'ladi.
SQL operatorlari orqali quyidagi vazifalarni bajarish mumkin:
1. Ma'lumotlarni so'rov orqali olish.
2. Jadvalning qatorlariga ma'lumot qo'shish, qatorlarini o'chirish va
yangilash.
3. Ob'ektlarni yaratish, o'zgartirish va o'chirish.
4. Ma'lumotlar bazasi va ob'ektlarga ruxsatlarni o'rnatish.
5. Ma'lumotlar bazasi foydalanuvchilarini hosil qilish va baza xafsizligini
ta'minlash.
2 hil turdagi SQL mavjud: interaktiv va o'rnatilgan (встроенный). SQL ning bu
2 turi ishlashi bir hil, lekin har xil joyda ishlatiladi.
5
Interaktiv SQL deganda — ma'lumotlar bazasiga so'rov orqali murojaat qilib,
shu zahoti natijani olish tushuniladi. Ya'ni bunda ketma-ketlik asosida jarayon sodir
bo'ladi. So'rov-natija rejimda ishlaydi.
O'rnatilgan SQL deganda – so'rovlar yig'indisi biror dasturlash tilida ishlatilishi
tushuniladi. Pascal, Delphi, Java tillarida bazaga murojaat qilib, natijani biror
o'zgaruvchiga yuklab qo'yamiz va kerakli joyda bu natijani ishlatamiz. Ya'ni bunda
so'rov berib, darhol natijani ololmaymiz. Natija faqat dasturning davom etishi uchun
olinadi va talab etilgan joyda ishlatiladi.
SQl operatorlari bir necha guruhlarga bo'lingan. Bu bo'linish operatorlarning
bajarilish vazifasi asosida bo'lingan. Ular quyidagilar:
DDL(Data Definition Language) , ANSI bu guruh SDL(Schema Definition
Language) deb ataladi. Bu guruhga ma'lumotlar bazasida ob'ektlar(jadvallar,
indekslar)ni hosil qiluvchi operatorlar kiradi.
DML(Data Manipulation Language) – ma'lumotlarni manipulyatsiya qiluvchi
operatorlar yig'indisi guruhi. Istalgan vaqtda jadval ichida qanday ma'lumotlar
saqlanayotganini aniqlovchi operatorlar.
DCL(Data Control Language) – ma'lumotlarni boshqaruvchi operatorlar.
ANSI ning ruxsati bilan, DCL DDL ning bir qismi sifatida qaraladi. Bu guruhlarni
aralashtirmaslik zarur. Bular alohida tillar emas, balki SQL operatorlarining
guruhlaridir.
Uslubiy ko’rsatma Toshkent Axborot Texnologiyalari Universiteti qoshidagi
Oliy o’quv yurtlararo ilmiy uslubiy kengashida ko’rib chiqilgan va tavsiya
qilingan dastur asosida ishlab chiqildi.
6
1 - LABORATORIYA ISHI
Mavzu: Ma`lumotlar bazasini loyihalash. Mohiyat – aloqa diagrammasini
qurish (ER modeli)
Ishdan maqsad: ma`limotlar bazasini loyihalash uchun mohiyat – aloqa
modelini ishlab chiqish bo`yicha ko`nikmaga ega bo`lish.
Masalani qo`yilishi:
ma`lumotlar bazasini lohiyalash va
“Mohiyat–aloqa”
modelini ishlab chiqish.
Uslubiy ko`rsatmalar: ma`lumotlar bazasini lohiyalash quyidagi tashkil
etuvchilarinio`rganishni taqazo
etadi. Ob`yektlar, ob`yekt
xususiyatlari,
bog`lanishlar (ob`yekt munosabatlari), vaqt oralig`i va hokazolar.
“Mohiyat – aloqa” modeli predmet sohani tashkil etuvchi uchta asosiy
komponentalardan foydalanib quriladi: mohiyat, atribut, aloqa. Konstruktiv
elementlar tarkibida “VAQT” tashkil etuvchisi faqat oshkormas holda ishtirok etishi
mumkin. Modelda vaqt, yil, sana va shunga o`xshash atributlar bilan tasvirlanadi.
Modelni quirishda “aloqa”mavjud ob`yektni, jarayonni yoki hodisani,
abstraksiyasi sifatida keladi. Atribut mahiyatni xarakterlaridan bo`lib, nom bilan
belgilanib, birorta qiymatlar to`plamidan qiymatlar qabul qilinadi.
“Mohiyat – aloqa” modelidagi bog`lanishlarga, ikki mohiyat o`rtasidagi har bir
bog`lanish turiga tegishli munosabatlarni kiritish zarur (binar, ternar.., n-nar).
Loyiha haqidagi axborot diagramma ko`rinishida rasmiylashtiriladi, buning
uchun quyidagi belgilar kiritiladi: mohiyat turlari – to`rtburchak bilan, atributlarovallar bilan tasvirlanadi va ular mos mohiyatlar bilan yo`nalishsiz qirralar bilan
bog`lanadi.
“Mohiyat – aloqa” modeli predmet sohani (PS) faqat aniq bir qismini
akslantiradi. Bu holda uni lokal model deyiladi. PS haqida to`la axborotga ega bo`lish
uchun uni etarli kengroq tekshirish zarur va oldingisini to`ldiradigan local modellar
7
qurish kerak. Shundan so`ng lokal modellar birlashtirilib PS haqida bir butun
kompozitsion tasvirga ega bo`lamiz.
Ma`lumotlar bazasida quyidagi munosabatlar mavjud:
1. Birga – bir (1:1)munosabat. A va V ob`ektlar to`plami orasida 1:1 munosabat
o`rnatilgan deyiladi, agarda A ob`ektning har bir
nusxasiga V ob`ektning bitta
nusxasi mos kelsa, va aksincha, V ob`ektning har bir nusxasiga A ob`ektning bitta
nusxasi mos kelsa.
2. Birga – ko`p (1:n) munosabat. A va V ob`ektlar to`plamida A ob`ektning har
bir nusxasiga V ob`ektning bir nechta nusxasi mos kelsa, shu bilan birga V ob`ektning
har bir nusxasiga A ob`ektning bittadan ko`p bo`lmagan nusxasi mos kelsa shunday
munosabat hosil bo`ladi.
3. Ko`pga – bir (n:1) munosabat A va V ob`ektlar to`plami orasida o`rnatilsa,
unda A ob`ektning har bir nusxasiga V ob`ektning ko`pi bilan bitta nusxasi mos
keladi. V ob`ektning nushalari orasida shundaylari mavjudki, ularga A ob`ektning bir
nechta nusxasi mos keladi.
4. Ko`pga – ko`p (m: n) munosabat. A va V ob`ektlar orasida shunday munosabat
o`rnatilgan deyiladi, agarda A ob`ektning har bir nusxasiga V ob`ektni bir nechta
nusxasi mos kelsa va aksincha.
1.1 jadval. Ulman-Chen notasiyasining mohiyat-aloqa modeli elementlari.
Yordamida ob’ektlar belgilanadi.
Yordamida ob’ekt atributlari belgilanadi. Ular
ob’ektlar bilan yo`nalishsiz chiziqlar yordamida
birlashtiriladi
Yordamida ob’ektlar orasidagi aloqalarni
belgilaymiz.
8
Bunda birga ko`p bog`langan A va V
orasida V ga qaratib yo`nalgan yo`nalishli
chiziq bilan ko`rsatiladi, ya’ni 1:N.
Agar A va V ob’ektlar o`rtasida N:1
bog`lanish bo`lsa, strelka A ga qarab
yo`naltiriladi.
Ko`pga – ko`p bog`lanish N:M A va V ob’ektlar
o`rtasida M: N bo`lsa, ularni ulovchi chiziq orqa
li bog`lanadi.
A va V orasida 1:1 bog`lanish bo`lsa,
yo`nalishsiz chiziq bilan bog`laymiz.
Ishni bajarish tartibi
Tanlangan ob’yekt bo`yicha mohiyat-aloqa diagrammasini yaratish.
Quyida “Foydali qazilma boyitish zavodi” bazasini yaratish uchun mohiyat – aloqa
diagrammasi yaratilgan.
9
1.1 - rasm. Foydali qazilma boyitish zavodi predmet sohasi uchun mohiyat – aloqa modeli
maxsulot_nomi
qurilma_nomi
kon_nomi
keltiriladi
Maxsulot
Qayta
ishlanadi
Qurilma
javobgar
Maxsulot
xomashyosi
keluvchi kon
bino_nomi
Xodim
Zavod bo`limlari
FISh
maosh
ish_staji
lavozim
10
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variantga muvofiq mavzu uchun
mohiyat aloqa diagrammasini yarating.
2. Predmet soha bo`yicha ob’yektlarni aniqlang.
3. Tanlangan ob'ektlarining atributlarini aniqlang.
4. O`b’yektlar o'rtasidagi bog`lanishni aniqlang.
5. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Predmet soha tushunchasiga tarif bering.
2. Mohiya-aloqa modeli deganda nimani tushunasiz?
3. Mohiyat-aloqa modelida asosiy elementlar tushunchasini aniqlang.
4. Mohiyat-aloqa modeli ma`lumot bazasi strukturasi qanday aniqlanadi?
5. Mohiyat-aloqa modeli diagrammasi qanday tasvirlanadi?
6. Mohiyat – aloqa diagrammasida munosabatlarning qanday turlari mavjud?
7. Ikki ob’yekt o'rtasidagi munosabatlar turini qanday aniqlash mumkin?
8. Ulman-Chen diagrammasini tavsiflang.
11
2 - LABORATORIYA ISHI
Mavzu: Relyatsion ma`lumotlar bazasini loyihalash
Ishdan maqsad:
Ma`lumotlar bazasini relyatsion modeli uchun jadvallar
tizimini ishlab chiqishni o`rganish va ob`yektlarni bog`lanish munosabatlarini tahlil
qilish.
Masalani qo`yilishi: Berilgan predmet soha ma`lumotlar bazasidagi barcha
ob`yektlarni relyatsion modelini ishlab chiqish.
Uslubiy ko`rsatmalar:
Ma`lumotlarni relyatsion modeli asosida munosabat
tushunchasi yotadi. Munosabatni 2 o`lchamli jadvallar yordamida tasvirlash qulay.
Jadval ko’rinishidagi ma’lumotlar tushunarli, ko`rimli va inson uchun oddiy
hisoblanadi. Munosabatlar to`plami ma`lumotlarni saqlash uchun ishlatilishi mumkin.
Shu bilan birga ular orasidagi bog`lanishlarni modellashtirish imkonini beradi.
Relyatsion yondashuv asosiy tushunchalari:
Ma’lumotlar toifasi – relyasion MB saqlanadigan ma’lumot qiymatlari;
Domen – domenlar ma’lumotlarni ayrim asosiy turlarini aniqlash orqali
o‘rnatiladi;
Atributlar – jadval ustunlar nomlari;
Bog‘lanish – relyation so‘zidan olinib munosabatni bildiradi;
Birlamchi kalit – bu kalit tashqi MB bilan bog‘lanishni o‘rnatish uchun xizmat
qiladi.
Relyatsion MB munosabatlarni o`zaro bog`langan to`plamidir. Har bir
munosabat kompyuterda fayl ko`rinishida tasvirlanadi.
12
Ishni bajarish tartibi
1-laboratoriya ishida qurilgan mohiyat - aloqa diagrammasi uchun relyatsion
bog`lanish o`rnatamiz.
2.1-rasm. Mohiyat - aloqa modelining umumiy ko`rinishi.
Foydali qazilmalarni boyitish fabrikasining relyatsion modeli jadvallarini tuzib
chiqamiz.
2.2 - jadval. Ma’lumotlar bazasining Korpuslar jadvali
Korpuslar(zavod bo’limlari)
ID
1
Maydalash korpusi
2
Yanchish korpusi
3
Flotatsiya korpusi
4
Quritish va quyish ko’rpusi
2.3 - jadval. Ma’lumotlar bazasining Qurilmalar jadvali
ID
Korpuslar_ID
Qurilma
1
1
Jag’li maydalagich
2
1
Konusli maydalagich
3
1
g’alvir
4
2
Sharli tegirmon
5
2
Barabanli tegirmon
6
3
Flotatsion mashina
7
4
Pech
13
2.4 – jadval. Ma’lumotlar bazasining Maxsulot jadvali
ID
Qurilma ID
Korpus ID
Maxsulot(Korpusdan
chiquvchi maxsulot)
1
7
4
Oltin
2
6
3
Kumush kukuni
3
6
3
Boshqalar
4
6
3
Mis kukuni
2.5 - jadval. Maxsulot xomashyosi keluvchi baza (MXKB)
ID
Maxsulot_ID
1
1
MXKB
Marjonbuloq
ochiq koni
2
2
Marjonbuloq
ochiq koni
3
3
Marjonbuloq
ochiq koni
4
4
Marjonbuloq
ochiq koni
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variantga muvofiq mavzu uchun
relyatsion bog`lanishni o`rnatish.
2. Predmet soha bo`yicha ob’yektlarni aniqlang.
3. Tanlangan ob'ektlarning atributlarini aniqlang.
4. O`b’yektlar o'rtasidagi bog`lanishni aniqlang.
5. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
14
Nazorat savollari
1. Relyatsion bog`lanish nima?
2. 1:1 munosabatning mohiyati.
3. 1:n munosabat bog`lanishda nimalarga e`tibor qaratish zarur?
4. m:n munosabat bog`lanishga misol keltiring.
5. Iyerarxik ma`lumotlar tuzilishi nima?
6. Mohiyat-aloqa modelidagi elementlar relyatsion modelga qanday o’tkaziladi?
15
3 - LABORATORIYA ISHI
Mavzu: SQL tilida jadvallar yaratish, o‘zgartirish va o‘chirish
Ishdan maqsad: predmet soha ma’lumotlar bazasini so`rovlar orqali yaratishni
va so`rovlar orqali oddiy jarayonlarni bajarishni o`rganish, hamda ko`nikmaga ega
bo`lish. Talabalarda DDL komandalaridan foydalanish va shu orqali relyasion MB
yaratish ko’nikmasini hosil qilish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasini SQL so`rovlari orqali
yaratish. Mavjud ob`yektlarni so`rovlar orqali ma`lumotlar bilan to`ldirish,
o`zgartirish va keraksiz ma`lumotlarni o`chirishni ko`rib chiqish.
Uslubiy ko`rsatmalar: SQL tilida quyidagi asosiy ma’lumotlar turlari
ishlatilib, ularning formatlari har xil MBBT lar uchun farq qilishi mumkin:
INTEGER
butun son (odatda 10 tagacha qiymatli raqam va
ishora).
SMALLINT
«qisqa butun» (odatda 5 tagacha qiymatli raqam va
ishora).
DECIMAL(p,q)o‘nli son, p raqam va ishoradan iborat (0 < p < 16).
O‘nli nuqtadan so‘ng raqamlar soni q orqali beriladi
(q < p, agar q = 0 bo‘lsa, tashlab yuborilishi
mumkin).
FLOAT
haqiqiy son 15 ta qiymatli raqam va butun darajadan
iborat. Daraja MBBT tipi bilan aniqlanadi (masalan,
75 yoki 307).
CHAR(n)
uzunligi o‘zgarmas, n ga teng bo‘lgan simvolli qator
(0 < n < 256).
VARCHAR(n) uzunligi o‘zgaruvchi, n simvoldan oshmagan simvolli
qator (n > 0 va har xil MBBT larda turlicha, lekin
4096 dan kam emas).
16
DATE
TIME
DATETIME
MONEY
maxsus komanda orqali aniqlanuvchi formatdagi
sana; sana maydonlari bizning eramizdan oldin bir
necha mingyilliklardan boshlanuvchi va bizning
eramiz beshinchi-o‘ninchi mingyilligi bilan cheklangan
haqiqiy sanalarni o‘z ichiga olishi mumkin.
maxsus komanda orqali aniqlanuvchi formatdagi vaqt
(ko‘zda tutilgan bo‘yicha hh.mm.ss).
sana va vaqt kombinatsiyasi.
maxsus komanda orqali aniqlanuvchi formatdagi pul
birligi.
SQL tili quyidagi tarkibiy qismlardan iborat:
DDL ( Mа’lumоtlаrni Tа’riflаsh Tili ) - ANSI dа ma’lumotlar
sxemаsini tа’riflаsh tili, оb’ektlаrni (jаdvаllаr, indekslаr, tаsаvirlаr vа
hоkаzо) yarаtuvchi buyruqlar to’plamidan ibоrаt.
DML (Mа’lumоtlаrni O‘zgаrtirish Tili) - bu iхtiyoriy dаqiqаdа jаdvаllаrdа
qаndаy qiymаtlаr sаqlаnishini аniqlоvchi buyruqlar mаjmuаsidir.
DCL (Mа’lumоtlаrni Bоshqаrish Tili) fоydаlаnuvchigа aniq оb’ektlаrga
tа’sir o‘tkаzishgа ruхsаt berish yoki bermаslikni аniqlоvchi buyruqlardаn ibоrаt.
DDL tilining asosiy komandalari:
CREATE – yangi jadval hosil qilish uchun ishlatiladi. Quyidagi ko’rinishda
yoziladi:
CREATE TABLE <jadval_nomi>( ustun_nomi va toifasi, … );
ALTER – jadvalga o’zgartirish kiritish uchun ishlatiladi. Bu buyruq jadvalga
yangi ustunlar qo'shish, ustunlarni o'chirish, ustunlar kattaligini o'zgartirish, hamda
cheklanishlarni qo'shish va olib tashlash imkoniyatlariga ega. Bu buyruq ANSI
standarti qismi emas, shuning uchun har xil tizimlarda har xil imkoniyatlarga ega.
Misol uchun jadvalga ustun qo’shish buyrug’i sintaksisi quyidagicha:
ALTER TABLE <jad_nomi> ADD <ustun_nomi><toifasi><o’lchami>;
17
DROP - jadvalni o’chirish buyrug’i. Jadvalni o'chirish imkoniga ega bo’lish
uchun, jadval egasi (ya’ni yaratuvchisi) bo’lshingiz kerak. Faqat bo‘sh jadvalni
o'chirish mumkin. Qatorlarga ega bo’lgan, to’ldirilgan jadvalni o‘chirish mumkin
emas, ya’ni jadval o‘chirishdan oldin tozalangan bo’lshi kerak. Jadvalni o'chirish
buyrug'i quyidagi ko‘rinishga ega:
DROP TABLE <jadval_nomi>;
Ishni bajarish tartibi
Avvalo 1 va 2 -laboratoriya ishida tuzgan jadvallarimizni esga olamiz. Bizda
5 ta jadval mavjud edi. Endi o’sha jadvallarni MYSQL da yuqorida sintaksisini
keltirib o’tganimizday komandalardan foydalanib yaratamiz:
1.
Eski yaratilgan ma’lumotlar bazasini ko’ramiz:
So`rov: show databases;
Natija:
3.1-rasm. Mavjud ma’lumotlar bazalarining ro’yxati
2. Yangi foydali_qazilma_boyitish_zavodi nomli baza yaratamiz;
18
So`rov: create database foydali_qazilma_boyitish_zavodi;
Natija:
3.2-rasm. Yangi foydali_qazilma_boyitish_zavodi nomli bazasining yaratilishi
3.
Oltin_rudasi nomli jadval yaratamiz:
So`rov: create table oltin_rudasi (id int, konsentratsiyasi double,
qazib_olingan_koni varchar(20));
Natija:
3.3-rasm. Oltin_rudasi nomli jadval yaratilishi
4.
Jadvalni ko’ramiz:
So`rov: desc oltin_rudasi;
Natija:
19
3.4-rasm. Yaratilgan Oltin_rudasi jadvalini ko’rinishi
5.
Jadvalga yangi “sanasi” nomli satr qo’shamiz:
So`rov: Alter table oltin_rudasi add sanasi varchar(10);
Natija:
3.5-rasm. Oltin_rudasi jadvaliga ALTER operatori orqali ustun qo’shilishi
6.
“sanasi” nomli satrning o’lchamini o’zgartiramiz:
So`rov: Alter table oltin_rudasi modify sanasi varchar(30);
Natija:
3.6-rasm. Oltin_rudasi jadvalida ALTER operatori orqali mavjud ustun toifasi
o`zgartirilishi
20
7. “Konsentratsiyasi” atributini “ulushi” nomi bilan o’zgartiramiz:
So`rov: Alter table oltin_rudasi change konsentratsiyasi ulushi double;
Natija:
3.7-rasm. Oltin_rudasi jadvalida ALTER operatori orqali mavjud ustun nomini
o’zgartirish
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da DDL buyruqlari bilan ishlaymiz.
2. MySqlda baza, jadval yaratish.
3. Jadvallar atributlarini kiritih.
4. O`b’yektlar o'rtasidagi bog`lanishni aniqlang.
5. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. CREATE buyrug`ining vazifalari nimalardan iborat?
2. ALTER buyrug`iga misol keltiring.
3. DROP va DELETE buyruqlarining farqi nimada?
4. DELETE buyrug`ining strukturasini ko`rsating.
21
4 - LABORATORIYA ISHI
Mavzu: Ma’lumotlarni tanlash va ular ustida amallar
Ishdan maqsad: Talabalarda DML komandalaridan foydalanish va shu
orqali relyatsion MB da ishlash ko’nikmasini hosil qilish.
Masalaning qo’yilishi: Avvalgi laboratoriya mashg’ulotida yaratilgan futbol
klubining MB ustida amallar bajarish.
Uslubiy ko`rsatmalar:Ma’lumotlar bazasiga axborotlar qo'shish, yangilash,
o'chirish va chiqarib tashlash imkonini beradi, odatda ma’lumotlami boshqarish
tili (DML – Data Manipulation Language) yordamida amalga oshiriladi.
Barcha
ma’lumotlarning
markazlashtirilgan saqlanishi mavjudligi va ulaming
tavsifi ba’zan so'rovlar tili (querylanguage) deb ataluvchi so'rovlarda tashkil
etilgan umumiy uskunasi sifatida DML tilidan foydalanish imkonini beradi.
So'rovlar tilining mavjudligi o'ziga xos faylli tizimlarni cheklanishlardan yo'qotish
imkoniyatini beradi, unda foydalanuvchilarning fiksirlangan so'rovlar to'plami ustida
ish olib borishlari yoki dasturiy ta’minotni boshqarishda ko'proq murakkab
muammolar uchun doimiy ravishda yaratilayotgan dasturlar sonining oshishi nazarda
tutiladi.
DML tilining ikki xil turi mavjud - protsedurali va protsedurali bo'lmagan
tillar. Ular bir-biridan ma’lumotlardan ko'chirma olish usullari bilan farqlanadi. Ular
o'rtasidagi asosiy farq, protsedurali tillar odatda MB da ketma-ket ravishda
axborotlarni qayta ishlaydi, protsedurali bo'lmagan tillar butun yozuvlar to'plamiga
birdan operatsiyaga kirishadi.
DML tili so’rovlari:
SELECT – Amal bajaradigan jadvalimizni tanlash, ekranga chiqarish komandasi.
Sintaksisi esa quyidagicha:
SELECT *FROM <jad_nomi> // jadvalni to’liq chiqarish
SELECT <ustun_nomi> FROM <jad_nomi> // jadval ustunlarini chiqarish
22
INSERT – SQL da barcha satrlar ushbu buyruq yordamida kiritiladi.
Sintaksisi esa quyidagicha:
INSERT INTO <jad_nomi> VALUES (“ustun_info”, “ustun_info”, … );
DELETE – satrlarni jadvaldan o’chirish buyrug’i.
Sintaksisi esa quyidagicha:
DELETE FROM <jad_nomi> WHERE qidiruv_sharti;
UPDATE – Maydon qiymatlarini o’zgartirish buyrug’i.
Sintaksisi esa 2 hil:
UPDATE <jad_nomi> SET column=expression;
UPDATE <jad_nomi> SET column=expression
WHERE qidiruv_sharti;
Ishni bajarish tartibi
Avvalo 3-laboratoriya ishida tuzgan jadvallarimizni esga olamiz. Endi o’sha
jadvallarni MYSQL da yuqorida sintaksisini keltirib o’tganimizday komandalardan
foydalanib yaratamiz.
1.Jadval ob’yektlariga qiymatlar beramiz:
So`rov: Insert into oltin_rudasi(id, ulushi, qazib_olingan_koni,sanasi) values(1,
75.5, ‘marjonbuloq_karyeri’,’27.09.2019’);
Natija:
4.1-rasm. Oltin_rudasi jadvaliga ma’lumotlarning kiritilishi
2. Jadvalni tanlaymiz va SELECT operatori orqali ekranga chiqaramiz.
So`rov: Select * from oltin_rudasi;
23
Natija:
4.2-rasm. Oltin_rudasi jadvaliga kiritilgan ma’lumotlarni ko’rish
3.MB ga yangi jadval qo’shamiz va UPDATEdan foydalanib maydonga qiymat
beramiz.
So`rov: Alter table oltin_rudasi add korpus varchar(20);
Update oltin_rudasi set korpus=’flotatsiya’ where id=1;
Natija:
4.3-rasm. Oltin_rudasi jadvalida UPDATE operatori orqali mavjud ma’lumotni
o`zgartirish
4. DROP operatori orqali jadvalni o’chiramiz:
So`rov: drop table oltin_rudasi;
24
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da DML buyruqlari bilan ishlaymiz.
2. MySqlda jadval ma’lumotlar kiritaming.
3. Jadvallar atributlarinini o`zgartiring.
4. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. SELECT buyrug`iga misol keltiring.
2. (*) nima vazifani bajaradi.
3. INSERT buyrug`ining barcha imkoniyatlarini ko`rsating.
4. AUTO_INCREMENT bo`lgan atribut INSERT buyrug`iga e`lon qilinishi shartmi?
5. UPDATE buyrug`i imkoniytalari.
6. WHERE buyrug`idan nima uchun foydalaniladi?
7. REPLACE buyrug`ining vazifalari nimalardan iborat?
8. UPDATE buyrug`ining vazifalari nimalardan iborat?
9. SQL tilida jadval nomlarini o’zgartirish.
10. SQL tilida jadval yozuvlarini o’zgartirish.
11. SQL tilida jadvaldan yozuvlarini olib tashlash.
12. SQL tilida jadvalga yangi yozuvlarini qo’shish uchun qanday buyruq beriladi?
13. SQL tilida jadvaldan ustunlarni olib tashlash uchun qanday buyruq beriladi?
25
5 - LABORATORIYA ISHI
Mavzu: AND, OR, NOT mantiqiy standart so‘zlardan foydalanish
Ishdan maqsad: Talabalarda AND, OR, NOT mantiqiy stanndart so‘zlardan
foydalanish va shu orqali relyatsion MB da ishlash ko’nikmasini hosil qilish.
Masalaning
qo’yilishi:
AND,
OR,
NOT,
IN,
BETWEEN,
LIKE
operatoridan foydalanib avvalgi mashg’ulotlarda yaratilgan jadvallar ustida amallar
bajarish.
Uslubiy ko`rsatmalar: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 operatolar:
Operator
Ta`rifi
=
teng
>
katta
<
kichik
>=
katta yoki teng
<=
kichik yoki teng
<>
teng emas
IN
biror qiymatlar to‘plamiga tegishliligini tekshirish
BETWEEN
biror qiymatlar diapozoniga tegishliligini tekshirish
LIKE
namuna bilan mosligini tekshirish
IS NULL
qiymat mavjudmasligini tekshirish
NOT
Mantiqiy inkor operatori
AND
VA mantiqiy operatori
OR
YOKI mantiqiy operatori
5.1-jadval. WHERE buyrug`i bilan ishlovchi operatorlar
26
Misol: Imtihonlarda kamida bitta 2 yoki 3 baho olgan talabalarni
identifikatorini tanlab chiqarish so`rovi.
SELECT id_st, mark
FROM mark_st
WHERE mark IN (2,3)
BETWEEN amali maydon qiymatini berilgan intervalga kirganligini tekshirish
uchun ishlatiladi. Yuqoridagi natijani BETWEEN operatoridan foydalanib olish
mumkin:
SELECT id_st, mark
FROM mark_st
WHERE mark BETWEEN 2 AND 3
Birorta xam 2, 3 olmagan talaba haqidagi ma’lumotlar olish uchun NOT IN
yoki NOT BETWEEN ishlatiladi.
Misol: Familiyalari A xarfi bilan boshlanuvchi talabalar ro‘yxatini tanlab
olish.
Bunday xolatda LIKE operatoridan foydalanish qulay hisoblanadi. LIKE
operatori 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.
SELECT id_st, surname
FROM student
WHERE surname LIKE 'A%'
Ishni bajarish tartibi
1. Oyligi 4 000 000 dan ko’p yoki id 2 dan katta Xodimlar Idsini, FISHini lavozimini
esa katta harflarda chiqaramiz;
27
Zavod va kon xodimlari jadvallarini ko’ramiz;
So`rov: SELECT *FROM zavod xodimlari;
Natija:
5.1-rasm. Zavod_xodimlari jadvalidagi ma’lumotlarni ko’rish
So`rov: SELECT xodim_id, FISH, UPPER(lavozimi) FROM zavod_xodimlari
WHERE oyligi>4000000;
Natija:
5.2-rasm. UPPER funksiyasini qo’llanishi natijasi
2. So`rov: SELECT xodim_id, substr(FISH ,1,1)||’.’|| lavozimi, FISH, manzili,
length(manzili), oyligi FROM zavod_xodimlari WHERE xodim_id IN(1,2,3)
28
AND oyligi>5000000;
Natija:
5.2-rasm. Substr va mantiqiy amallarning qo’llanishi
3. So`rov: SELECT FISH, length(lavozimi), manzili, oyligi FROM
zavod_xodimlari WHERE NOT xodim_id=3;
Natija:
5.3 – rasm. Length funksiyasi va NOT mantiqiy amalining qo’llanishi
4. Zavod xodimlarining ism, familiyasini LOWER yordamida kichik harflarda,
manzilining uzunligi va IDsi 1 va 2 oralig’idagi xodimlarni chiqaramiz:
So`rov: SELECT xodim_id, Lower(FISH), manzili, length(manzili), oyligi
FROM zavod_xodimlari WHERE xodim_id BETWEEN 1 and 2;
29
Natija:
5.4 – rasm. Lower, length funksiyalari va Between mantiqiy amalining
qo’llanishi
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da AND, OR, NOT,IN, BETWEEN, LIKE buyruqlari bilan
ishlaymiz.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Ma`lumotlar bazasidagi qanday mantiqiy operatorlarni bilasiz?
2. BETWEEN nima va u qanday so`rovlar uchun qo`llaniladi?
3. AND, OR, NOT operatorlarining vazifasi nima?
4. IN, BETWEEN, LIKE operatorlarinig vazifasi nima?
30
6 - LABORATORIYA ISHI
Mavzu: Ma’lumotlarni saralash. Where standart so‘zidan foydalanish
Ishdan maqsad: Ma`lumotlar bazasiga so`rovlar tizimini yaratish, saralash va
WHERE standart so`zidan foydalanishni o`rganish va ko`nikmaga ega bo`lish.
Masalani qo`yilishi: Loyihalanayotgan ma`lumotlar bazasiga so`rovlar tizimini
tuzish va uni relyatsion sxema ko`rinishida tasvirlash. So`rovlar tizimi orqali kerakli
ma`lumotlarni ajratib olish va saralash.
Uslubiy
ko`rsatmalar:
Ma`lumotlar
bazasi(MB)
buyurtmachisi
bilan
birgalikda, ma`lumotlar bazasiga so`rovlar tizimini ishlab chiqish zarur. Ishlab
chiqilgan so`rovlar tizimi relevant yaratilgan “Mohiyat-aloqa” modeliga va
buyurtmachi talablarini maksimal darajada qondirish kerak. Agar buyurtmachi
qo`ygan talablarga qurilgan “Mohiyat-aloqa” modeli so`rovlar tizimi to`la
qanoatlantirmasa, unda predmet sohani qo`shimcha o`rganib va tahlil qilib, “Mohiyataloqa” modeli kerakli elementlar, bog`lanishlar va munosabatlar bilan to`ldiriladi.
So`rovlar
tizimini
ma`lumotlar
bazasidan
foydalanuvchiga
beriladigan
axborot bo`yicha standart va nostandart so`rovlarga sinflanadi.
Ma`lumotlar bazasiga reglamentlanmagan so`rovlar deb foydalanuvchilarni
joriy ehtiyojlariga qarab, lekin qurilgan model imkoniyatlari chegarasida va bu
so`rovlarni unga relevantligini saqlangan holda o`zini ta`rifini o`zgartirish imkonini
beradigan so`rovlarga aytiladi.
Ishni bajarish
1. Avvalgi laboratoriyada yaratgan bazamizning jadvallarini ko’ramiz;
So`rov: show tables from foydali_qazilma_boyitish_zavodi;
Natija:
31
6.1 – rasm. Bazada mavjud jadvallarni ko`rish
2.Bu jadvallarning har birini desc buyrug’i yordamida ko’rib chiqamiz ( batafsil 3-4laboratoriyada ko’rgan edik);
So`rov:
desc korpus;
desc qurilma;
desc maxsulot;
6.2-rasm. Ma`lumotlar bazasidagi Korpus, qurilma, maxsulot jadvallari
32
So`rov:
desc maxsulot_bazasi;
desc ishlatilishi;
Natija:
6.2 – rasm. Bazada maxsulot_bazasi jadvalini yaratish va ko’rish
6.3 – rasm. Bazada ishlatilishi jadvalini yaratish va ko’rish
33
3. Insert buyrug’i yordamida mavjud jadvallarga ma’lumotlar kiritamiz va select
buyrug’i yordamida natijani ko’ramiz. ( batafsil 3-4-laboratoriyada ko’rgan
edik);
34
6.4 – rasm. INSERT operatoridan foydalanish
35
4.Update va alter table <jadval_nomi> add <ustun_nomi> <tipi> buyruqlari
yordamida mavjud jadvallarni to’ldiramiz; ( batafsil 3-4-laboratoriyada ko’rgan edik)
6.5 – rasm. ALTER operatoridan foydalanish
36
6.6 – rasm. UPDATE operatoridan foydalanish
Endi laboratoriyamizning asosiy amallariga o’tamiz.
5.Maxsulot jadavalimizning oxirgi yachaykasini NULL qilamiz va ko’ramiz.
So`rov: Update maxsulot set korpus_id where id=NULL;
Select *from maxsulot;
Endi korpus_id ustunining NULL qiymati joylashgan jadval satrini o’chiramiz va
ko’ramiz.
So`rov: Delete from maxsulot where korpus_id NULL;
Select *from maxsulot;
37
Natija:
6.7-rasm. DELETE operatoridan foydalanish
6. “Qurilma” jadvalidan birinchida turgan qurilma nomi va IDsini chiqaramiz;
So`rov: Select min(id) as ‘eng birinchi turgan qurilma’, qurilma_nomi from
qurilma;
Natija:
6.8-rasm. MIN() funksiyasining qo’llanishi
7. “Qurilma” jadvalidan oxirida turgan qurilma IDsini chiqaramiz;
So`rov: Select max(id) as ‘eng oxirida turgan qurilma’ from qurilma;
Natija:
6.9 –rasm. MAX() funksiyasining qo’llanishi
38
8.
“qurilma” jadvalidan id si 2 va 4 oralig’ida bo’lgan qurilma ma’lumotlarini
chiqaramiz;
So`rov: Select *from qurilma where id between 2 and 4;
Natija:
6.10-rasm. BETWEEN operatorining qo’llanishi
9.“qurilma” jadvalidagi qurilmalar sonini aniqlaymiz:
So`rov: Select count(*) as ‘qurilma_soni’ from qurilma;
Natija:
6.11-rasm. COUNT() funksiyasining qo’llanishi
10. “qurilma” jadvalidagi qurilmalar id larining o’rta arifmetigini aniqlaymiz.
So`rov: Select avg(id) as ‘qurilma id lari orta arifmetigi ’ from qurilma;
Natija:
6.12 – rasm. AVG()funksiyasining qo’llanishi
11. “oltin” maxsuloti haqida ma’lumotlarni chiqaramiz;
So`rov: Select * from maxsulot where maxsulot_nomi=’oltin’;
39
Natija:
6.13 – rasm. SELECT va WHEREning qo’llanishi
12. “qurilma” jadvalida barcha qurilmalar id lari yig’indisini topamiz;
So`rov: Select sum(id) as ‘ qurilma id lari yig’indisi ’ from qurilma;
Natija:
6.14 – rasm. SUM() funksiyasining qo’llanishi
13. “qurilma” jadvalidagi qurilma nomlarini bosh harflarini va qurilma nomini
chiqaramiz;
So`rov: Select mid(qurilma_nomi, 1, 1) as ‘bosh harflar’, qurilma_nomi from
qurilma;
Natija:
6.15 – rasm. MID() funksiyasining qo’llanishi
40
Vazifalar
4. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da Select, where buyruqlari bilan ishlaymiz.
5. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
5. Ma`lumotlar bazasiga qilinadigan so`rovlarni qanday ko`rishlarini bilasiz?
6. MBBTni qanday toifa funksiyalarini bilasiz?
7. MBBTni asosiy tashkil etuvchilari nimalardan iborat?
8. So`rovlar tizimini yaratayotganda nimalarga e`tibot berish zarur?
9. FIRST komandasini yana qanday ko`rinishlari bor?
10.
AS komandasinig vazifasi va qo`llanilishi haqida ayting?
41
7 - LABORATORIYA ISHI
Mavzu: Group by va Order by standart so‘zlaridan foydalanib so‘rov yaratish
Ishdan maqsad:
Berilgan predmet soha ma`lumotlar bazasidan foydalanib
GROUP BY va ORDER BY standart so`zlaridan foydalanishni o`rganish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng undan unumli foydalanishni tashkil etish maqsadida GROUP BY va ORDER
BY standart so`zlaridan foydalanib so`rovlar yaratish. Ma`lumotlar bazasidan
kerakli ma`lumotlarni yuqoridagi standart so`zlar orqali ajratib olishni tashkil etish.
Uslubiy ko`rsatmalar: Ma`lumotlar bazasi ustida so`rovlar tashkil etishda
guruhli funktsiyalar bilan xam ishlash mumkin. Guruhli funksiyalar jadvaldan
yigilgan axborotlarni olish uchun xizmat qiladi. Bu funksiyalari jadvaldagi satrlar
guruxi bilan amal bajarib, 1 ta natija chiqaradi. Guruxli funksiyalar uchun quyidagi
amallarni ishlatamiz.
Select komandasida group by parametr ham ishlaydi. Bu paramet bir maydon
o`xshash parametrlari (aniqlanayotgan qiymati) boyicha guruhlaydi va agregat
funksiyalar ishlatilsa, ular shu guruhga bo`ladi.
Misol:
Select student_ID
Max (mark) from exam_marks
Group by student_ID
Guruhlashni bir nechta maydon bo`yicha ham bajarish mumkin.
Select student_ID, subject_ID
Max (mark)
From exam-marks group by
Student_ID, subject_ID
42
Ba’zi hollarda jadvalidagi ma’lumotlarni tartiblash talab etiladi. Buning uchun
ORDER BY parametri ishlatiladi. Bu parametri ko`rsatilgan maydonning barcha
yozuvlarni o`sib borishi tartibida tartiblab beradi. Order by desc yozilsa kamayish
tartibida yoziladi. Order by (ASC) bo`lsa o`sish tartibida yoziladi.
Agar
narxini
o‘quvchilar
kamayish
ro‘yxatini
tartibida
alifbo
chiqarish
tartibida
zarur
yoki mahsulotlarlar
bo‘lsachi? Buning uchun
SELECT operatori tarkibida ORDER BY ifodasi ko‘zda tutilgan. ORDER
BY ifodasida ustunlar nomlari va nomerlari
hamda
DESC,
ASC
predikatlarini qo‘llab, murakkab tartiblash shartlarini hosil qilish mumkin.
Misol:
1. Select* from Subject Order by Subj_name
2. Select*from Subject Order by Subj-name desc
Tartiblash bir nechta maydon uchun bajarilishi xam mumkin. Bunda avval
tartiblash 1-maydon bo`yicha keyin 2-maydon bo`yicha bajariladi.
SHuningdek order by parametri group by parametri bilan birga ishlatilishi mumkin.
Bunda order by so`rovda oxiri keladi va unda guruxni ichidagi yozuvlarni tartiblaydi.
Misol:
1. Select * from SUBJECT Order by Semester, Subj-name;
2. Select subj-name, Semester, subj-name Order by semester
SQL tili 1 ta so`rov ichiga 2-so`rovni joylashtirib ishlatish imkonini beradi.
Misol: birorta talabani familiyasi bo`yicha uning ID sini topish talab etilsa, va bu
talabani barcha baxolari xaqidagi ma’lumotni ko`rmoqchi bo`lsak quyidagi so`rovni
yozish mumkin.
Select*; from exam_marks
Where student_ID (select student_I)
From student where surname= „Petrov‟
43
Jadvallar bilan ishlaganda, ba’zan ustun va jadval nomlarini qayta aniqlashga
yoki qayta nomlashga to`gri keladi. Bunday masalalar ko`pincha birorta ifodalarni
xisoblaganda, virtual ustunga joylashganda unga nom qo`yish ba’zan natija jadvali
ustunini nomlashda kerak bo`ladi.
Faculty
Name
Stipend Select name AS
Axmedov 150
Name_ talaba,
Pozilov
2* stipend AS yangi St
200
Faculty
Name
Stipend yangi st
Select name
Axmedov
300
Name_ talaba,
Pozilov
400
2 * stipend yangi
st
Xuddi shundek biz ustun nomlarini ham uzunligini o`zgartirishimiz mumkin.
Ishni bajarish tartibi
1. Zavod korpusidagi bir kunlik chiquvchi jami maxsulotlar o’girliklari topilsin.
So`rov:
select
korpus_id,
sum(ogirligi_kg)
as
‘korpusdan chiquvchi
oxirgi jami maxsulotlar ogirligi’ from maxsulot group by korpus_id;
Natija:
7.1-rasm. Group by kalit so’zi va Sum() funksiyasining qo’llanilishi
44
2. Z avoddagi qurilmalar guruhlanib eng ko’p maxsulot chiqaruvchisi topilsin
So`rov: select qurilma_id, max(ogirligi_kg) from maxsulot group by qurilma_id;
Natija:
7.2 –rasm. Group by kalit so’zi va Max() funksiyasining qo’llanilishi
3. Zavoddagi korpuslar nomi alfavit bo`yicha tartiblansin va alfavitga teskari tartibda
tartiblansin. Korpus nomini alfavit bo`yicha tartiblash:
So`rov: Select* from korpus order by korpus _nomi;
Natija:
7.3–rasm. Order by kalit so’zining qo’llanilishi
4.Korpus nomini alfavitga teskari tartibda tartiblash:
So`rov: Select* from korpus order by korpus _nomi Desc;
45
Natija:
7.4–rasm. Order by kalit so’zining Desc bilan qo’llanilishi
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da order by ,group by buyruqlari bilan ishlang.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. SQL tilida GROUP BY kalit so`zining strukturasi qanday?
2. SQL tilida ORDER BY kalit so`zining strukturasi qanday?
3. GROUP BY kalit so`zidan qanday maqsadlarda foydalaniladi?
4. ORDER BY kalit so`zidan qanday maqsadlarda foydalaniladi?
5. GROUP BY kalit so`zi ORDER BY dan nimasi bilan faq qiladi?
46
8 - LABORATORIYA ISHI
Mavzu: Having standart so‘zi orqali so‘rovlar yaratish
Ishdan maqsad: Berilgan predmet soha ma`lumotlar bazasidan foydalanib
HAVING standart so`zidan foydalanishni o`rganish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng undan unumli foydalanishni tashkil etish maqsadida HAVING standart
so`zlaridan
foydalanib
so`rovlar
yaratish.
Ma`lumotlar
bazasidan
kerakli
ma`lumotlarni yuqoridagi standart so`z orqali ajratib olishni tashkil etish.
Uslubiy ko`rsatmalar: HAVING parametri qator guruhlari uchun tanlov
shartini belgilashga imkon beradi. U WHERE parametriga o'xshaydi, lekin GROUP
BY parametridan keyin aniqlanadi va birlashtirilgan qatorlarga qo'llaniladi. HAVING
parametrini tanlash shartida, so'rov bo'yicha ustunlar qiymatlarini, shu jumladan
agregat funktsiyalarining qiymatlarini ishlatishingiz mumkin.
Guruxlar ichidan kerakli yozuvlarni ajratib olish uchun HAVING ishlatiladi.
HAVING=WHERE, faqat HAVING guruxlar ichiga tegishli
Select Subj_name, max (hour)
From SUBJECT;
Group by Subj_name
Having max (Hour)>= 34;
Ishni bajarish tartibi
1. Zavoddan bir kunlik olinadigan maxsulotlarning 5000 kgdan kam ishlab
chiqarilganlari haqida ma`lumot berilsin:
So’rov: Select *from maxsulot having ogirligi_kg<5000;
47
Natija:
8.1 – rasm. Having kalit so’zining qo’llanilishi
2.Ikki va undan maxsulot ishlaydigan qurilmalar chiqarilsin;
So’rov: select korpus_id as ‘2 tadan kop maxsulot ishlab chiqaradigan korpuslar
id lari’ , count(maxsulot_nomi) as ‘maxsulotlar soni’ from maxsulot group by
korpus_id having count(maxsulot_nomi)>=2;
Natija:
8.2. – rasm. Group by va Having kalit so’zlarining qo’llanilishi
48
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da Having buyrug`i bilan ishlang.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Ma`lumotlar bazasiga qilinadigan so`rovlarni qanday ko`rishlarini bilasiz?
2. Ma`lumotlar bazasiga so`rovlar tuzishda qanday tillardan foydalaniladi?
3. Foydalanuvchi ma`lumotlar bazasiga so`rovlar orqali murojat qilganda nima
natijalar beradi?
4. MBBTni qanday toifa funksiyalarini bilasiz?
5. MBBTni asosiy tashkil etuvchilari nimalardan iborat?
6. MB ishlab chiqish uchun MBBT tanlash qanday mezonlar bilan aniqlanadi?
7. So`rovlar tizimini yaratayotganda nimalarga e`tibot berish zarur?
8. SQL tilida HAVING kalit so`zining strukturasi qanday?
9. HAVING kalit so`zidan qanday maqsadlarda foydalaniladi?
10.
HAVING va WHERE kalit so`zlarining vazifalarini farqlab bering.
11.
HAVING kalit so`zi qanday agregat funksiyalar bilan qo`llanilishi mumkin?
49
9 - LABORATORIYA ISHI
Mavzu: UNION, INTERSECT va MINUS standart so‘zlaridan foydalanish
Ishdan maqsad: Berilgan predmet soha ma`lumotlar bazasidan foydalanib
UNION, INTERSECT va MINUS standart so`zlaridan foydalanishni o`rganish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng ob`yektlardagi ma`lumotlarni birlashtirish maqsadida UNION, INTERSECT va
MINUS standat so`zilaridan foydalanish. Barcha ob`yektlargagi ma`lumotlarni
yuqoridagi standart so`zlar orqali birlashtiradigan so`rvlar tashkil etish.
Uslubiy ko`rsatmalar: Agar select operatorida from suzidan keyin 1 ta jadval
emas 2 ta jadval ishlatilsa, bunda surovni natija tashkil qiluvchi jadval 1 jadvali xar
bir satri bilan 2-jadvalni xar bir satriga ulashdan (kombinatsiyadan) yaratiladi. Bu
amal jadvallarni birlashtirish deyiladi.
Rеlyatsion Mbda
axborotlarni ortiqchaligini
bilan kamaytiriladi. Jadvallar ustida har xil
normallashtirish
yo`li
amallar bеrish mumkin. Bu
amallarni tartiblab ishlab chiqqan odam Kodd hisoblanadi. Amallarga quyidagilar
kiradi:
-
birlashtirish(UNION);
-
kеsishuv(INTERSECT);
-
ayirma(MINUS);
UNION
(Birlashtirish).
R
va
S
munosabatlarni
birlashtirish
RUS
ko`rinishida bеrilib, bu amalni natijasi R munosabatga tеgishli bo`lgan yoki S
munosabatga tеgishli bo`lgan yoki
to`plamidir. Bu amallarni
ikkalasiga
bajarayotganda
ham
bir
xil
Natijani tartibi ham opеrandlar tartibiga tеng bo`ladi.
50
tеgishli
tartibda
bo`lgan
bo`lishi
kortеjlar
kеrak.
AUB
9.1 – rasm. Union birlashtirish amali Venn diagrammasidagi tasviri
INTERSECT(kesishuv).
R
va
S
munosabatlarni
ayirmasi
R∩S
ko`rinishida yoziladi va R va S ob`yektga tegishli bo`lgan kortejlar to`plamiga
aytiladi. Bu erda kortejlar har ikki ob`yektga ham bir xil ko`rinishda bo`lishi
shart. Bu amalni bajarganda ham opеrandlarni tartibi bir xil bo`lishi kеrak.
A∩B
9.2 – rasm. Union birlashtirish amali Venn diagrammasidagi tasviri
MINUS(Ayirma) yoki EXCEPT. R va S munosabatlarni ayirmasi R-S
ko`rinishida yoziladi va undagi kortеjlar to`plami R munosabatga tеgishli, lеkin
S
munosabatga
tеgishli bo`lmagan kortеjlardir. Bu amalni bajarganda ham
opеrandlarni tartibi bir xil bo`lishi kеrak.
51
A/B
9.3 – rasm. Except (Minus) birlashtirish amali Venn diagrammasidagi tasviri
UNION ifodasi bir yoki bir nechta SQL so‘rovlar natijasini birlashtirishga
imkon beradi.
Ikki yoki undan ortiq jadvallar jamlanganda ularning chiqish ustunlari jamlash
uchun o‘zaro muvofiq bo‘lishi kerak. Bu shuni bildiradiki, xar bir so‘rov bir xil
sondagi ustunlarni ko‘rsatib, bu ustunlar mos tartibda kelishi va xar biriga mos
tiplarga ega bo‘lishi kerak. Sonli maydonlar bir xil tipga va kattalikka ega bo‘lishi
kerak. Simvolli maydonlar bir xil sondagi simvollarga ega bo‘lishi kerak. Moslik
ta’minlovchi yana bir shart bo‘sh (NULL) qiymatlar jamlanma ixtiyoriy ustunida
man etilgan bo‘lishi kerak. Bu qiymatlar boshqa jamlovchi so‘rovlarda xam
man etilgan bo‘lishi kerak. Bundan tashqari siz ostki so‘rovlarda UNION
operatoridan, xamda jamlovchi so‘rov SELECT operatorida agregat funksiyalardan
foydalanishingiz
mumkin
emas.
Siz
individual
so‘rovlardagi
kabi
natijani
tartiblash uchun ORDER BY operatoridan foydalanishingiz mumkin. UNION
ifodasi bir yoki bir necha SQL so‘rovlar natijasini birlashtirishga imkon
beradi.
INTERSECT – bu operator ikki jadvalni taqqoslab ikkisida ham mavjud
bo’lgan elementni chop etadi. Masalan A to’plamda 1, 2 va 3 ; B da esa 3, 4 va 5
bo’lsin. U holda:
52
SELECT * FROM A INTERSET SELECT * FROM B
buyrug’ining natijasida 3 soni chop etiladi.
MINUS
–
birinchi
jadvalda
mavjud
va
ikkinchisida
yo’q
bo’lgan
elementlarni chiqaradi. Yuqoridagi ifodada intersect o’rniga minus operatorini
yozsak, natijada ekranga 1 va 2 soni chiqariladi.
UNION ALL- (Bir nechta so'rovlarni bitta SQL-buyruqqa birlashtirish va
shunga mos ravishda so'rovlar natijalarini birlashtirish uchun UNION kalit so'zidan
foydalaniladi. UNION bilan qo'shilgan so'rovlar bir xil miqdordagi ustunlarni
chiqarishi kerak va ustunlar ma'lumotlari turlari mos bo'lishi kerak. Natijalarni
birlashtirishda takroriy satrlar avtomatik ravishda o'chiriladi; takroriy satrlarning
o'chirilishining oldini olish uchun UNION so'zining o'rniga UNION ALL ifodasini
ishlatiladi. Va nihoyat, bog'langan so'rov satrlarini ORDER BY jumlasi yordamida
buyurtma qilish mumkin.
Ishni bajarish tartibi
Intersect, Minus operatorlari MySQLda ishlamaydi. Shuning uchun bu
laboratoriya ichini Open Server dasturida bajaramiz.
1. Zavod va kon xodimlari jadvallarini ko’ramiz;
So`rov:
SELECT * FROM zavod_xodimlari;
Natija:
9.4 – rasm. Zavod_xodimlari jadvalidagi ma’lumotlarni ko’rish
53
So`rov:
SELECT *FROM kon_xodimlari;
Natija:
9.5 – rasm. Kon_xodimlari jadvalidagi ma’lumotlarni ko’rish
2. Bu ikki jadvalni UNION yordamida birlashtiramiz.
So`rov:
SELECT * FROM zavod_xodimlari
UNION
SELECT * FROM kon_xodimlari;
Natija:
9.6 – rasm. Zavod_xodimlari va Kon_xodimlari jadvallarini Union operatori orqali
birlashtirish natijasi
54
3. Bu ikki jadvalni UNION ALL yordamida birlashtiramiz.
So`rov:
SELECT * FROM zavod_xodimlari
UNION ALL
SELECT * FROM kon_xodimlari;
Natija:
9.7 – rasm. Zavod_xodimlari va Kon_xodimlari jadvallarini Union operatori orqali
birlashtirish natijasi
4. INTERSECT yordamida jadvallar kesishmasini topamiz;
So`rov:
SELECT *FROM zavod_xodimlari
INTERSECT
SELECT *FROM kon_xodimlari;
Natija:
Xodim_ FISH
manzili
lavozimi
Ish_staji
Oyligi
Boyitish ishlari
15
10000000
id
3 Nazrullayev Lalmikor
55
Oybek
6 Duvlonov
menejeri
Lalmikor
Bunyod
7 Shobotayev
Ekologiya va atrof
16
10000000
14
9000000
muhit ishlara
Oqtosh
Shahzod
Loyihalash ishlari
muhandisi
9.8 – rasm. Zavod_xodimlari va Kon_xodimlari jadvallarini Inresect operatori
qo’llanilishi natijasi
5. MINUS yordamida 1-jadvalimizdan ikkinchisini ayirish amalini bajaramiz:
SELECT *FROM zavod_xodimlari
MINUS
SELECT *SELECT kon_xodimlari;
Natija:
Xodim_id FISH
1 Eshbotayev
Manzili
Lavozimi
Ish_staji
Oyligi
Lalmikor
Tegirmon
10
7000000
Marjonbuloq Labaratori 15
9000000
Sardor
2 Abirov Dilshod
mashinisti
ya mu
4 Soliyev Elmurod Marjonbuloq Xavsizlik
10
7000000
12
8000000
ishlari
5 Muhammadiyev
Olmali
Gruz
Begzod
mashinisti
9.9– rasm. Zavod_xodimlari va Kon_xodimlari jadvallarini Inresect operatori
qo’llanilishi natijasi
56
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da union, intersect va minus standart so`zlari bilan ishlang.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. UNION standart so`zi nima maqsadda foydalaniladi?
2. MINUS standart so`zi qanday hollarda qo`llaniladi?
3. INTERSECT standart so`zi nima maqsadda foydalaniladi?
4. UNIONning qanday ko`rinishlari mavjud?
5. MBda birlashtirish nima?
6. MBda qo`shish amali qaysi standart so`zi bilan qo`llaniladi?
7. MBda ayirish amali deganda nima tushiniladi?
8. Standart so`zlarning qo`llanish sintaksisini ko`rsating.
9. UNION ALL standart so`zining UNIONdan farqi nimada?
10.
Hisoblash algebrasi nima?
57
10 - LABORATORIYA ISHI
Mavzu: Standart funksiyalardan foydalanib so‘rovlar yaratish
Ishdan maqsad:
Berilgan predmet soha ma`lumotlar bazasidan foydalanib
standart funksiyalardan foydalanib so‘rovlar yaratishni o`rganish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng ob`yektlardagi ma`lumotlar ustida o`zgartirishlar qilish uchun standart
funksiyalardan foydalanib ishlash mumkin.
Uslubiy ko`rsatmalar:
Standart funksiyalar:
LOWER - satrni kichik harfga o'zgartiradi
UPPER - satrni katta harfga o'zgartiradi
RPAD – O'ng qatorni ma'lum bir uzunlikdagi boshqa qator bilan bog'laydi
REPLACE – Satr ichidagi barcha substringlarning o'rnini yangi pastki satr bilan
almashtiradi
UCASE – Satrni katta harfga o'zgartiradi
REVERSE – Satrni o'zgartiradi va natijani qaytaradi
FORMAT - Raqamni "#, ###, ###. ##" kabi formatga, o'nlik kasrlarning
aniqlangan soniga qadar aylantiradi.
INITCAP - ifodaning sonli turga mansubligini aniqlaydi (MySqlda bu buyruq
bajarilmaydi)
LPAD - funktsiyasi satr boshiga to'ldirilgan belgilar qo'shib asl satrdan olingan
belgilangan uzunlikdagi satrni qaytaradi (agar manba satridagi belgilar soni
belgilanganidan kam bo'lsa yoki "ortiqcha" belgilarni bekor qilish agar manba
satridagi belgilar soni belgilanganidan ko'p bo'lsa).
RPAD -funktsiyasi satr boshiga to'ldirilgan belgilar qo'shib asl satrdan olingan
belgilangan uzunlikdagi satrni qaytaradi (agar manba satridagi belgilar soni
58
belgilanganidan kam bo'lsa yoki "ortiqcha" belgilarni bekor qilish agar manba
satridagi belgilar soni belgilanganidan ko'p bo'lsa).
LENGTH- Qator uzunligini qaytaradi (baytda).
LTRIM - qator boshidagi bo’sh joylar (probel)larni o’chiradi.
RTRIM -funksiyasi satr oxiridagi bo'sh joyni olib tashlash orqali asl nusxadan
olingan satrni qaytaradi.
LEFT -funktsiyasi asl satrning boshlang'ich satrini qaytaradi
RIGHT- funktsiyasi belgilangan sondan tashkil topgan pastki qatorni
qaytaradi.
Ishni bajarish tartibi
Korpus nomli jadvalga yuqorida ko`rsatilgan buyruqlarini tadbiq qiling.
1. So`rov: Select * from korpus;
Natija:
10.1 – rasm. Korpus jadvalidagi ma’lumotlarni ko’rish
2. So`rov: Select LOWER(korpus_nomi) from korpus;
Natija:
10.2 – rasm. Lower() funksiyasining qo’llanishi
59
3. So`rov: Select UPPER(korpus_nomi) from korpus;
Natija:
10.3– rasm. Upper() funksiyasining qo’llanishi
4. Initcap-ifodaning sonli turga mansubligini aniqlaydi(MySqlda bu buyruq
bajarilmaydi);
5. Lpad ('<String>', <Strength>, '<Belgilarni to'ldirish>').
So`rov: Select LPAD(korpus_nomi,5,’mayda’) as newarea from korpus;
Natija:
10.4 – rasm. LPAD() funksiyasining qo’llanishi
6. Rpad ('<String>', <Strength>, '<Belgilarni to'ldirish>').
So`rov:Select RPAD (korpus_nomi,3,’may’) as qisqartirma from korpus;
60
Natija:
10.5 – rasm. RPAD() funksiyasining qo’llanishi
7. Length ('<String>'), octet_length ('<String>')
So`rov: select Length(korpus_nomi) from korpus;
Natija:
10.6– rasm. Length() funksiyasining qo’llanishi
8. LTRIM, RTRIM - Satrning chap va ong tomonidagi probellarni olish.
So`rov: Select id, FISH, turar_joyi, LTRM(turar_joyi), RTRM(turar_joyi) from
master;
Natija:
10.7– rasm. LTRIM(), RTRIM() funksiyalarining qo’llanishi
61
9. LEFT(qator,miqdor) – qatorning chap tomonidan, ko’rsatilgan miqdordagi
belgilarni qaytaradi.
So`rov: Select Left(korpus_nomi,5) as korpus_nomi from korpus;
Natija:
10.8 – rasm. Left() funksiyasining qo’llanishi
10. RIGHT(qator, miqdor) - qatorning o’ng tomonidan, ko’rsatilgan miqdordagi
belgilarni qaytaradi;
So`rov: Select Right(korpus_nomi, 4) as korpus_nomi from korpus;
Natija:
10.9 – rasm. Right() funksiyasining qo’llanishi
62
Vazifalar
1.
Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da standart funksiyalar bilan ishlang.
2.
Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Standart so`zlarning qo`llanish sintaksisini ko`rsating.
2. LOWER() funksiyasining vazifasi nima?
3. UPPER () funksiyasining vazifasi nima?
4. RPAD () funksiyasining vazifasi nima?
5. LPAD () funksiyasining vazifasi nima?
6. RPAD () funksiyasining vazifasi nima?
7. LENGTH- Qator uzunligini qaytaring (baytda).
8. LTRIM () funksiyasining vazifasi nima?
9. RTRIM () funksiyasining vazifasi nima?
10. LEFT -funktsiyasi asl satrning boshlang'ich satrini qaytaradi
11. RIGHT() funksiyasining vazifasi nima?
63
11 - LABORATORIYA ISHI
Mavzu: Agrеgat funksiyalardan foydalanish
Ishdan maqsad:
Berilgan predmet soha ma`lumotlar bazasida agregat
funksiyalaridan foydalanishni o`rganish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng ob`yektlardagi ma`lumotlarni guruhli agregat funktsiyalar orqali ishlash.
Uslubiy
ko`rsatmalar: Guruxli (agregat) funksiyalar. Agregat (yoki
STATIK) funksiyalar sonli yoki hisoblanuvchi ustunlar bilan ishlaydi.Guruhli
funksiyalar jadvaldan yig`ilgan axborotlarni olish uchun xizmat qiladi. Bu
funksiyalari jadvaldagi satrlar guruhi bilan amal bajarib, 1 ta natija chiqaradi. Agregat
funksiya argumenti butun ustun bo‘lib, bitta qiymat qaytaradi.
Select so`rovida guruhli funksiyalar maydon nomlari kabi ishlatiladi. Maydon
nomlari funksiyalar argumentlari sifatida keladi.
Agregat (yoki STATIK) funksiyalar sonli yoki hisoblanuvchi ustunlar
bilan ishlaydi. Agregat funksiya argumenti butun ustun bo‘lib, bitta qiymat
qaytaradi.
Bu funksiyalarni ko‘rib chiqamiz:
SUM() – Ustundagi hamma qiymatlar summasini hisoblaydi.
AVG() – Ustundagi hamma qiymatlar o‘rtasi qiymatini hisoblaydi.
MIN() – Ustundagi hamma qiymatlar eng kichigini aniqlaydi.
MAX() – Ustundagi hamma qiymatlar eng kattasini aniqlaydi.
COUNT()– Ustundagi qiymatlar sonini hisoblaydi.
COUNT(*)– So‘rov natijalari jadvalidagi satrlar sonini hisoblaydi.
Agregatlash
argumenti
bo‘lib
ustun
nomidan
tashqari
matematik ifoda xizmat qilishi mumkin.
SQL tilida matematik funksiyalaridan quyidagilar ishlatiladi:
ABS (son) – sonning absolyut qiymatini hisoblaydi;
64
ixtiyoriy
ISNUMERIC (ifoda) – ifodaning sonli turga mansubligini aniqlaydi;
SING(son) – sonning ishorasini aniqlaydi;
RAND(utun son) – 0 va 1 oralig’ida berguli siljiydigan favqulotdagi sonni
hisoblaydi;
ROUND(son, aniqlik) – ko’rsatilgan aniqlikda sonni yaxlitlaydi.
POWER(son, daraja) – sonni ko’rsatilgan darajaga ko’taradi;
SORT(son) – sondan kvadrat ildiz chiqaradi;
SIN(burchak) – radianlarda ifodalangan burchak sinusini hisoblaydi; COS(burchak)
– radianlarda ifodalangan burchak kosinusini hisoblaydi; EXP(son) – sonnining
eksponentasini hisoblaydi;
LOG(son) – sonning natural logarifmini hisoblaydi; Qatorlar bilan ishlash
funksiyalari:
LEN(qator) – qatordagi belgilar sonini hisoblaydi;
LTRIM(qator)
–
qator
boshidagi
bo’sh
joylar
(probel)larni
o’chiradi;
RTLIM(qator)
-
qator
oxiridagi
bo’sh
joylar
(probel)larni
o’chiradi;
LEFT(qator,miqdor) – qatorning chap tomonidan, ko’rsatilgan miqdordagi
belgilarni qaytaradi;
RIGHT(qator, miqdor) - qatorning o’ng tomonidan, ko’rsatilganmiqdordagi
belgilrni qaytaradi;
LOWER(qator) – ko’rsatilgan qator belgilarini kichik harflarga o’tkazadi;
UPPER(qator) - ko’rsatilgan qator belgilarini katta harflarga o’tkazadi; STR(son) –
son qiymatini belgi formatiga konvertirlashni amalga oshiradi;
SUBSTRING(qator,indeks, uzunlik) – qator uchun ko’rsatilgan uzunlikdagi qator
qismini, aniqlashtirilgan indeksdan boshlab qaytaradi.
Tizim funksiyalari:
GETDATE() –tizim faol sanasini qaytaradi;
ISDATE(qator) – qatorning ko’rsatilgan sana formatiga moslini aniqlaydi;
65
DAY(sana) – ko’rsatilgan sana raqamini qaytaradi;
MONTH(sana)
–
YEAR(sana)
–
ko’rsatilgan
sanadagi
ko’rsatilgan
oy
yil
raqamini
raqamini
DATAADD(tur,raqam,sana) – sanaga ko’rsatilgan tur
qaytaradi;
qaytaradi;
birligidagi
raqamni qo’sadi (yil, oy, kun, saot va boshqalar).
Xavfsizlik tizimi funksiyalari:
SQL
muhitida
foydalanuvchilarning
ma’lumotlarga
nisbatan
xavfsizligini ta’minlash uchun bir qancha funksiyalar mavjud. Shulardan
asosiylarini ko’rib o’tamiz.
SQL Serverda xavfsizlikni o’rnatish uchun quyidagi funksiyalar ishlatiladi:
• GRANT - ob’yekt uchun bajarilshi mumkin bo’lgan vazifalarni, buyruq orqali
bajarishga ruxsat berishni o’rnatadi;
• REVOKE – ob’yekt va buyruqlar uchun o’rnatilgan imtiyozlarni bekor qiladi;
• DENY – ob’yekt bilan har qanday amal bajarishni taqiqlaydi (shunu
aytish
kerakki,
REVOKE
buyrig’i
faqat
imtiyozlarni
olib
tashlayi).
Foydalanuvchiga ruxsat olish funktaiyalarini quyidagi buyruqlar amalga
oshiradi:
CREATE DATABASE — ma’lumotlar bazasini yaratish huquqi;
CREATE DEFAULT — jadval ustunlari uchun standart qiymatlarni o’rnatish
huquqi;
CREATE PROCEDURE — saqlanadigan protseduralarni yaratish huqiqi;
CREATE ROLE — jadval ustunlari uchun qoidalarni o’ranish huquqi;
CREATE TABLE — jadvallarni yaratish huquqi;
CREATE VIEW — ob’ekt tasvirlarini yaratish huquqi;
BACKUP DATABASE — zahira nusxalarni yaratish huquqi;
BACKUP TRANSACTION — tranzaktsiyalar zaxira nusxasini yaratish huquqi.
66
Ishni bajarish tartibi
1. SUM() – jadvaldagi qiymatlar qig`indisini hisoblash.
“qurilma” jadavalida barcha qurilmalar id lari yig’indisini topamiz;
So`rov: Select sum(id) as ‘ qurilma id lari yig’indisi ’ from qurilma;
Natija:
11.1 – rasm. Sum() agregat funksiyasidan foydalanish
2. AVG() – qiymqatlar o`rta arifmetigini hisoblash.
“qurilma” jadvalidagi qurilmalar id larining o’rta arifmetigini aniqlaymiz.
So`rov: Select avg(id) as ‘qurilma id lari orta arifmetigi ’ from qurilma;
Natija:
11.2– rasm. Avg() agregat funksiyasidan foydalanish
3. MIN() – eng kichik qiymatni chiqarish
“Qurilma” jadvalidan birinchida turgan qurilma nomi va id sini chiqaramiz;
So`rov: Select min(id) as ‘eng birinchi turgan qurilma’, qurilma_nomi from
qurilma;
Natija:
11.3 – rasm. Min() agregat funksiyasidan foydalanish
67
4. MAX() – eng katta qiymatni chiqarish
a ) Zavoddagi qurilmalar guruhlanib eng ko’p maxsulot chiqaruvchisi topilsin
So`rov: So`rov: select qurilma_id, max(ogirligi_kg) from maxsulot group by
qurilma_id;
Natija:
11.4– rasm. Max() agregat funksiyasidan foydalanib, ustundagi eng katta qiymatni
aniqlash
b) “Qurilma” jadvalidan oxirida turgan qurilma id sini chiqaramiz;
So`rov: Select max(id) as ‘eng oxirida turgan qurilma’ from qurilma;
Natija:
11.5– rasm. Max() agregat funksiyasidan foydalanib, oxirgi Idni aniqlash
5. COUNT() – Ustundagi qatorlar sonini sanaydi.
a) Ikki va undan maxsulot ishlaydigan qurilmalar chiqarilsin.
So’rov: Select korpus_id as ‘2 tadan kop maxsulot ishlab chiqaradigan korpuslar
id lari’ , count(maxsulot_nomi) as ‘maxsulotlar soni’ from maxsulot group by
korpus_id having count(maxsulot_nomi)>=2;
68
Natija:
11.6– rasm. Count() agregat funksiyasidan foydalanish
b) “qurilma” jadvalidagi qurilmalar sonini aniqlaymiz.
So’rov: Select count(*) as ‘qurilma_soni’ from qurilma;
Natija:
11.7– rasm. Count() agregat funksiyasi orqali qurilmalar sonini aniqlash
Bu funksiyalarga qo`shimcha ravishda quyidagi funksiyalarni ham ko`rib
chiqamiz:
6. Rand() - tasodifiy son.
So’rov: Select id, maxsulot_nomi, rand(id) from maxsulot;
Natija:
11.8– rasm. Rand() funksiyasidan foydalanish
69
7. ROUND() - Butun sonni yaxlitlash funktsiyasi.
So`rov: Select id, maxsulot_nomi, round(korpus_id/qurilma_id, 3) from
maxsulot;
Natija:
11.9– rasm. Round() funksiyasidan foydalanish
8. POWER() - Sonning darajasini hisoblash.
Select korpus_id, qurilma_id, power(korpus_id, qurilma_id) from maxsulot;
Natija:
11.10– rasm. Power() funksiyasidan foydalanish
9. SQRT() - Sonning kvadrat ildizini topish.
So`rov:Select korpus_id, sqrt(korpus_id) from maxsulot;
70
Natija:
11.11– rasm. Sqrt() funksiyasidan foydalanish
10. SIN() - Ifoda sinusini hisoblash.
So`rov: Select korpus_id, sin(korpus_id) from maxsulot;
Natija:
11.12– rasm. Sin() funksiyasidan foydalanish
11. LOG()- Sonnig natural logarifmni hisoblash.
So`rov: Select korpus_id, log(korpus_id) from maxsulot;
71
Natija:
11.13– rasm. Log() funksiyasidan foydalanish
12. BETWEEN() - ko`rsatilgan oraliqdagi ma’lumotlarni chiqarish.
“qurilma” jadvalidan IDsi 2 va 4 oralig’ida bo’lgan qurilma ma’lumotlari chiqaramiz;
So`rov: Select *from qurilma where id between 2 and 4;
Natija:
11.14 – rasm. Between() funksiyasidan foydalanish
13. MID()- ustundagi yozuvlarning bosh harfini shiqarish.
“qurilma” jadvalidagi qurilma nomlarini bosh harflarini va qurilma nomini
chiqaramiz.
So`rov: Select mid(qurilma_nomi ,1,1) as ‘bosh harflar’, qurilma_nomi from
qurilma;
72
Natija:
11.15 – rasm. Mid() funksiyasidan foydalanish
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da agregat funksiyalar bilan ishlang.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. SQL tilidagi qanday agregat funksiyalarni bilasiz?
2. COUNT agregat funksiyasi qanday vazifani bajaradi?
3. SUM agregat funksiyasi qanday vazifani bajaradi?
4. AVG agregat funksiyasi qanday vazifani bajaradi?
5. MAX agregat funksiyasi qanday vazifani bajaradi?
6. MIN agregat funksiyasi qanday vazifani bajaradi?
7. SQL tilidagi matematik funksiyalarga misol keltiring.
8. SQL tilidagi sana-vaqt funksiyalariga misol keltiring.
73
12 - LABORATORIYA ISHI
Mavzu: Bir nеchta jadvallar birlashtirish, JOINlar bilan ishlash
Ishdan
maqsad:
Berilgan
predmet
soha
ma`lumotlar
bazasidan
foydalanib, bir nеchta jadvallar birlashtirish, JOINlar bilan ishlash.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng ob`yektlardagi ma`lumotlarni birlashtirish maqsadida INNER JOIN, LEFT
JOIN, RIGHT JOIN, CROSS JOIN, FULL OUTER JOIN va ON standart
so`zlaridan
foydalanish.
Barcha
ob`yektlardagi
ma`lumotlarni yuqoridagi
standart so`zlar orqali birlashtiradigan so`rovlar tashkil etish.
Uslubiy
ko`rsatmalar:
Agar select operatorida from so`zidan keyin 1 ta jadval emas 2 ta jadval
ishlatilsa, bunda surovni natija tashkil kiluvchi jadval 1 jadvali xar bir satri bilan 2jadvalni xar bir satriga ulashdan (kombinatsiyadan) yaratiladi. Bu amal jadvallarni
birlashtirish deyiladi.
1.
SQL INNER JOIN operatorining 1-2 jadvalning mos elementlarini qo`shadi.
SQL INNER JOIN operatorining sintaksisi quyidagi ko`rinishda bo`ladi:
SELECT
column_names [,... n]
FROM
Table_1 INNER JOIN
Table_2
ON condition
74
12.1 – rasm. Inner join operatorining Venn diagrammasi orqali ko’rinishi
1. SQL LEFT JOIN operatorining 1jadval va 2 jadvalning 1 jadvalda mos
elementlarini qo`shadi.
SQL LEFT JOIN operatorining sintaksisi quyidagi ko`rinishda bo`ladi:
SELECT
column_names [,... n]
FROM
Table_1 LEFT JOIN Table_2
ON condition
12.2 – rasm. Left outer join operatorining Venn diagrammasi orqali ko’rinishi
2. SQL RIGHT JOIN operatorining 2 jadval va 1 jadvalning 2 jadvalda mos
elementlarini qo`shadi.
SQL RIGHT JOIN operatorining sintaksisi quyidagi ko`rinishda bo`ladi:
SELECT
column_names [,... n]
FROM
Table_1 RIGHT JOIN Table_2 ON condition
75
12.3– rasm. Right outer join operatorining Venn diagraamsi orqali ko’rinishi
3. CROSS JOIN operatori 1 jadvaldagi xar bir element uchun 2 jadvaldagi
elementlarni bog`lab chiqadi.
SQL CROSS JOIN operatorining sintaksisi quyidagi ko`rinishda bo`ladi:
SELECT
column_names [,... n]
FROM
Table_1 CROSS JOIN Table_2
4. SQL FULL OUTER JOIN operatori 1 jadvaldagi xar bir element uchun 2
jadvaldagi elementlarni bog`lab chiqadi.
SQL FULL OUTER JOIN operatorining sintaksisi quyidagi ko`rinishda
bo`ladi:
SELECT
column_names [,... n]
FROM
Table_1 FULL JOIN Table_2
ON condition
12.4 – rasm. Full outer join operatorining Venn diagrammasi orqali ko’rinishi
76
Ishni bajarish tartibi
1. SQL INNER JOIN operatori
So`rov: SELECT *FROM zavod_xodimlari
INNER JOIN kon_xodimlari
ON zavod_xodimlari.FISH=kon_xodimlari.FISH;
Natija:
12.5 - rasm. Inner join qo’llanishi natijasi
2. LEFT JOIN operatori
So`rov: SELECT * FROM zavod_xodimlari
LEFT JOIN kon_xodimlari
ON
zavod_xodimlari.manzili = kon_xodimlari.manzili;
Natija:
12.5 - rasm. Left join qo’llanishi natijasi
77
2.
RIGHT JOIN operatori
So`rov: SELECT *FROM zavod_xodimlari
RIGHT JOIN kon_xodimlari
ON
zavod_xodimlari.oyligi = kon_xodimlari.oyligi;
Natija:
12.6 – rasm. Right join qo’llanishi natijasi
3. CROSS JOIN operatori
So`rov: SELECT *FROM zavod_xodimlari
CROSS JOIN kon_xodimlari
ON
zavod_xodimlari.ish_staji = kon_xodimlari.ish_staji;
Natija:
78
12.7– rasm. Cross join qo’llanishi natijasi
4. FULL OUTER JOIN operatori:
So`rov:
SELECT *FROM zavod_xodimlari
FULL OUTER JOIN kon_xodimlari
ON zavod_xodimlari.FISH=kon_xodimlari.FISH;
Natija:
12.1– jadval. Full outer join qo’llanishi natijasi
Xodim_id FISH
1 Eshbotayev
manzili
lavozimi
Ish_staji
oyligi
Lalmikor
Tegirmon
10
70000
Sardor
2 Abirov
Dilshod
3 Narzullayev
mashinisti
Marjonbu Labaratoriya
loq
mu
Lalmikor
Boyitish ishlari
Oybek
4 Soliyev
Elmurod
5 Muhammadiy
Bunyod
15
Marjonbu Xavsizlik
loq
ishlari
Olmali
Gruz
15
Ekalogiya va
atrof mu
79
10000
000
10
70000
00
12
mashinisti
Lalmikor
90000
00
boyich
ev Begzod
6 Duvlonov
00
80000
00
16
10000
000
7 Shobotayev
Oqtosh
Loyiha ishlari
Shahzod
1 Aliyev Sarvar
14
muhand
Lalmikor
Burgulash
00
10
mashinisti
2 Berdiyorov
Bunyod
4 Mamirov
Mullabul
Bosh loyihachi
70000
00
15
oq
90000
00
Gobdin
Gruz
Shahzod
5 Abirqulov
90000
12
mashinisti
Moltob
Tashish
Alisher
80000
00
10
mashinisti
70000
00
Vazifalar
1.
Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN,
FULL OUTER JOIN va ON standat so`zilari bilan ishlang.
2.
Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. SQL tilidagi qanday JOIN larni bilasiz?
2. INNER JOIN qanday vazifani bajaradi?
3. LEFT JOIN qanday vazifani bajaradi?
4. RIGHT JOIN qanday vazifani bajaradi?
5. CROSS JOIN qanday vazifani bajaradi?
6. FULL OUTER JOIN qanday vazifani bajaradi?
80
13 - LABORATORIYA ISHI
Mavzu: Murakkab so‘rovlar yaratish. TOP, LIMIT yoki ROWNUM
Ishdan maqsad:
Berilgan predmet soha ma`lumotlar bazasidan foydalanib
TOP, LIMIT yoki ROWNUM lardan foydalanishni o`rganish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng undan unumli foydalanishni tashkil etish maqsadida TOP, LIMIT yoki
ROWNUM lar orqali so`rovlar yaratish.
Uslubiy ko`rsatmalar: SQL LIMIT va SQL TOP operatorlarining vazifasi
belgilangan satrlarni chaqirishdan iborat. SQL TOP operatori MS SQL Serverda
ishlaydi, SQL LIMIT operatori esa MySQLda va Oracle da ROWNUM operatori
ishlaydi ularnig vazifasi bir hil.
SQL Server / MS Access Syntax:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
MySQL Syntax:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Oracle Syntax:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Misol. MS SQL Serverda ishlash
SELECT TOP 3 * FROM Customers;
81
Misol. SQL da ishlash
SELECT * FROM Customers
LIMIT 3;
Misol. Oracleda ishlash
SELECT * FROM Customers
WHERE ROWNUM <= 3;
Ishni bajarish tartibi
Avvalgi bajargan korpus nomli jadvalni chaqirib olamiz.
SELECT * FROM korpus;
1. So`rov: SELECT * FROM korpus LIMIT 3;
Buyrug`ini kiritamiz natijada birinchi uchta satr hosil bo`ladi
Natija:
13.1 – rasm. Limit operatori orqali 3 ta qatorni ekranga chiqarish
2. So`rov: Select * korpus_nomi FROM korpus LIMIT 2,3;
Buyrug`ini yozamiz, natijada 2, 3 satrlar hosil bo`ladi.
82
Natija:
13.2 – rasm. Limit operatori orqali 2,3 qatorni ekranga chiqarish
3. So`rov: SELECT * korpus_nomi FROM korpus
ORDER BY korpus_nomi DESC LIMIT 2,3;
Natija:
13.3 rasm
Vazifalar
1.
Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da murakkab so`rovlar yaratish.
2.
Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Murakkab so‘rovlar yaratish ushun qaysi operatorlardan foydalanish mumkin
2. TOP operatorining vazifasi va u qaysi dasturda ishlaydi?
3. LIMIT operatorining vazifasi va u qaysi dasturda ishlaydi?
4. ROWNUM operatorining vazifasi va u qaysi dasturda ishlaydi?
83
14 - LABORATORIYA ISHI
Mavzu: SQL tilida INDEX yaratish
Ishdan maqsad:
MySQL maxsus ustun qiymatlariga ega qatorlarni tezda
topish uchun indekslardan foydalanishni o`rganish.
Masalani
qo`yilishi:
Bu laboratoriya ishida
MySQL indekslari, shu
jumladan indekslarni yaratish, indekslarni o'chirish, jadvalning barcha indekslarini
sanab o'tish va MySQLda boshqa muhim ko'rsatkichlar bilan ishlanadi.
Uslubiy
ko`rsatmalar:
MySQL
maxsus
ustun
qiymatlariga
ega
qatorlarni tezda topish uchun indekslardan foydalanadi. Indekssiz MySQL tegishli
satrlarni topish uchun butun jadvalni skanerdan o'tkazishi kerak. Jadval qanchalik
katta bo'lsa, u sekinroq qidiradi.
Indekslarni yaratish(creating indexes) - sizni indeks tushunchasi bilan tanishtiradi
va jadvalning bir yoki bir nechta ustunlari uchun indeks qanday yaratilishini ko'rsatib
beradi.
Indekslarni o'chirish(removing indexes)- jadvalning mavjud indeksini qanday olib
tashlashni ko'rsatib beradi.
Jadval indekslarini ro'yxatlash(listing table indexes) - barcha indekslarni yoki
jadvalning o'ziga xos indekslarini ro'yxat qilish to'g'risida ma'lumot beradi.
Noyob indekslar(unique indexes) - ustunlarda saqlanadigan aniq qiymatlarni
ta'minlash uchun noyob indekslardan foydalanadi.
Prefiks indekslari(frefix indexses) - belgilar qatori ustuniga indeks yaratish uchun
prefiks indeksidan qanday foydalanishni ko'rsatib beradi.
Ko'rinmas indekslar (invisible indexes) - indeks ko'rinishini qamrab oladi va
indeksni ko'rinadigan yoki ko'rinmas qilib ko'rsatishni ko'rsatadi.
Kichik indekslar (descending indexes) - so'rov samaradorligini oshirish uchun
pasayadigan indekslardan qanday foydalanishni ko'rsatib beradi.
84
Kompozit indekslar (composite indexes) - kompozit indekslarning qo'llanilishini
tasvirlaydi
va
sizning
so'rovlaringizni
tezlashtirish
uchun
ularni
qachon
ishlatishingizni ko'rsatadi.
Klasterli indekslar (clustered indexes) - InnoDB jadvallaridagi klasterlangan
indekslarni tushuntiradi.
Indeksning
kardinalligi
(index
cardinatily)
-
indeksning
kardiologiyasini
tushuntiradi va shou indekslari buyrug'i yordamida uni qanday ko'rishni ko'rsatib
beradi.
FOYDALANISH INDEX (use index hint) - jadvalda satrlarni topish uchun
so'rovlar optimallashtiruvchisiga belgilangan indekslarning yagona ro'yxatidan
foydalanishni ko'rsatishda USE INDEX maslahatini qanday ishlatishni ko'rsatib
beradi.
FORCE INDEX hint - jadvaldan ma'lumotlarni tanlash uchun so'rov optimizatorini
belgilangan indekslardan foydalanishga majbur qilish uchun FORCE INDEX
ko'rsatmalaridan qanday foydalanishni ko'rsatib beradi.
Quyida bazi asosiy so’rovlar sintaksisi bilan tanishamiz:
Index (ko’rsatkich) yaratishning MySQLdagi umumiy sintaksisi:
CREATE INDEX indeks_nomi
ON jadval_nomi (ustun1, ustun2, ...);
Masalan:
1) CREATE INDEX familiya
ON shaxslar (familiya);
2) CREATE INDEX FISH
ON shaxslar (familiya, ism, sharif);
Index (ko’rsatkich)ni ko’rsatishning MySQLdagi umumiy sintaksisi:
1) Show indexes from jadval_nomi;
2) Show keys from jadval_nomi in malumotlar_bazasi_nomi;
Index (ko’rsatkich) o’chirishning MySQLdagi umumiy sintaksisi:
85
1) Oracle bazada:
DROP INDEX jadval_nomi.indeks_nomi;
2) MySQL 5.6.16 da:
ALTER TABLE jadval_nomi
DROP INDEX indeks_nomi;
Kabi komandalar orqali amalga oshiriladi.
Ishni bajarish tartibi
1.
Bazamizdagi barcha jadvallarni ko’ramiz:
So`rov: show tables from foydali_qazilma_boyitish_zavodi;
Natija:
14.1 – rasm. foydali_qazilma_boyitish_zavodi ma’lumotlar bazasidagi barcha
jadvallarning ro`yxati
2.
“Ishlatilishi” nomli jadvalni ko’ramiz va “asosiy maxsulot” nomli indeks
yaratamiz:
So`rov: Select * from ishlatilishi;
Create index Asosiy_maxsulot on ishlatilishi(maxsulot_id, ishlatilish_turi);
86
Natija:
14.2 – rasm. Ishlatilishi jadvali uchun indeks yaratish
3. Yaratgan indeksimizni ko’ramiz:
So`rov: show indexes from ishlatilishi;
Natija:
14.3 – rasm. Ishlatilishi jadvali uchun yaratilgan indekslar ro`yxati
4. Endi “Maxsulot” nomli jadvalga ham “Ruda” nomli indeks yaratamiz:
So`rov: Select *from maxsulot;
Natija:
14.4 – rasm. Maxsulot jadvalidagi ma’lumotlarni ko`rish
87
So`rov: Create index ruda on maxsulot(id, maxsulot_nomi);
Natija:
14.5 – rasm. Maxsulot jadvali uchun ideks yaratish so`rovi
So`rov: Show indexes from maxsulot;
Natija:
14.6 – rasm. Maxsulot jadvali uchun yaratilgan indekslarni ko’rish
5. “maxsulot” jadvalidan “Ruda” nomli indeksni ko’ramiz:
So`rov: Show keys from maxsulot in foydali_qazilma_boyitish_zavodi;
Natija: bu so`rov natijasi yuqoridagi so`rov natijasi bilan bir xil bo’ladi.
6. “maxsulot” jadvalidan “Ruda” nomli indeksni o’chiramiz:
So`rov: Alter table maxsulot drop index ruda;
Natija:
14.8 – rasm. Maxsulot jadvalidan Ruda nomli indeksni o’chirish so`rovi
Yuqorida ko’rib turganingizdek maxsulot jadvalidagi indexlar ko’rsatilganda
”Empty set ” yani bo’sh chiqdi;
88
Xulosa qilib aytganda index bu jadval ustunlarini ko’rsatadigan ko’rsatkichdir.
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da indekslar bilan ishlang.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Indeskslarni vazifasi nima?
2. Indekslarni yaratish qanday amalga oshiriladi?
3. Indekslarni o'chirish qanday amalga oshiriladi?
4. Jadval indekslarini ro'yxatlash vazifasi nima?
5. Noyob indekslar vazifasi nima?
6. Prefiks indekslari vazifasi nima?
7. Ko'rinmas indekslar vazifasi nima?
8. Kichik indekslar vazifasi nima?
9. Kompozit indekslar vazifasi nima?
10. Klasterli indekslar vazifasi nima?
11. Indeksning kardinalligi vazifasi nima?
12. Foydalanish index vazifasi nima?
13. Force index hint vazifasi nima?
89
15 - LABORATORIYA ISHI
Mavzu: Tasavvur (VIEW) yaratish va undan foydalanish
Ishdan maqsad:
Berilgan predmet soha ma`lumotlar bazasidan foydalanib
tasavvurlar yaratish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng ob`yektlarda tasavvurlarni yaratish va VIEW dan foydalanish.
Uslubiy
ko`rsatmalar:
Ba’zi hollarda SELECT operatorini natijasi
emas, tasavvur obyekti bo‘lganda edi, unga oddiy ma’lumot bazasini oddiy jadvali
kabi murojaat qilinar edi. Ko‘p hollarda esa MB uchta jadvaldan iborat ekanligini
xisobga olmay, bitta tasavvur ob’yekti bilan ishlanar edi. Shuning uchun ham
MySQLda tasavvurlardan ya’ni VIEWdan foydalaniladi.
Ma’lumotlar bazasi jadvallardan tashkil topadi. Jadvallar aloxida fayl
ko‘rinishida, yoki birorta faylni bo‘lagi bo‘lishi mumkin.
Ma’lumki, SELECT operatori yordamida virtual jadvallar yaratish, ya’ni
vaqtinchalik jadvallar yaratish mumkin. Bunday jadvallar vaqtinchalik bo‘lib,
yaratgan foydalanuvchi o‘zi undan foydalanishi mumkin.
Tasavvurlar ham vaqtinchalik jadvallar bo‘lib, ular ko`p foydalanuvchilarga
murojaat qilishi mumkin va u ma’lumot bazasidan majburan olib tashlanguncha
mavjud bo‘ladi.
Tasavvurlar MB oddiy jadvallariga o‘xshash bo‘lib, ma’lumotlar saqlovchi
fizik obyekt hisoblanmaydi. Tasavvurlarda ma’lumotlar jadvallardan tanlab olinadi.
Tasavvurlar foydalanuvchilardan jadvallarni ba’zi ustunlarini yashirish yoki
ko‘pincha foydalanuvchiga kerakli bo‘lgan bir nechta jadvaldan bitta yaratish kerak
bo‘ladi.
90
VIEW yaratish va o’chirishning so’rovi sintaksisi
CREATE VIEW tasavvur_nomi AS
SELECT ustun1, ustun2, ...
FROM jadval_nomi
WHERE shartli_tenglik;
DROP VIEW tasavvur_nomi;
Masalan:
CREATE VIEW Braziliya_xaridorlari AS
SELECT xaridor_familiyasi, xaridor_ismi
FROM xaridorlar
WHERE mamlakat = "Braziliya";
DROP VIEW Braziliya;
Ishni bajarish tartibi
1.
Maxsulot jadvalidan 4000 dan ko’p maxsulotlarni aks ettiruvchi Viewni
yaratamiz:
So`rov: Create view 4000_kg_kop_maxsulotlar as select maxsulot_nomi,
ogirligi_kg, from maxsulot where ogirligi_kg>4000;
Natija:
15.1 – rasm. View yaratilishi
2.
Tasavvur (view)ni ko’ramiz:
So`rov: Select * from 4000_kg_dan_kop_maxsulotlar;
91
Natija:
15.2 – rasm. Yaratilgan Viewdagi ma’lumotlarni ko’rish
3.
Tasavvurni o’chirish:
So`rov: Drop view 4000_kg_dan_kop_maxsulotlar;
Natija:
15.3 – rasm. Viewni ma’lumotlar bazasidan o’chirish
Vazifalar
1. Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu
uchun MySQL da Tasavvur, VIEW yarating va undan foydalaning .
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Tassavurlar nima?
2. Tassavurlarni yaratish qanday amalga oshiriladi?
3. Tassavirlarni o'chirish qanday amalga oshiriladi?
92
16 LABORATORIYA ISHI
Mavzu: SQLda protseduralar yaratish
Ishdan
maqsad:
Berilgan
predmet
soha
ma`lumotlar
bazasi uchun
protsedura yaratish.
Masalani qo`yilishi: Predmet soha ma`lumotlar bazasi shakllantirilgandan
so`ng ob`yektlarda proseduralarni yaratish va ulardan foydalanish.
Uslubiy
ko`rsatmalar:
Protsedura bu ma'lumotlar bazasida saqlanadigan oddiy skript tilidagi kichik
dastur hisoblanadi. (subprogram kabi). MySQL holatida protseduralar MySQL-da
yoziladi va MySQL ma'lumotlar bazasida/serverda saqlanadi.
MySQl da protdedura bilan ishlashning umumiy sintaksisi:
Protsedura yaratish:
delimiter //
create procedure protsedura_nomi(protsedura prototipi)
begin
{protsedura so’rovlar amallar… maydoni}
end//
protsedurani chaqirish:
call protsedura_nomi(@prototip)//
protsedura natijasini ko’rish:
select @prototip;
Eslatma: delimiterning vazifasi shuki bu kodlarni bitta satrda emas bir necha satrlarda
yozib birlashtirish imkonini beradi. Delimiter belgisi orasida proseduraning kodi
yoziladi. Uning sintaksisi:
1. Boshlanishi:
Delimiter kalit_belgi
2. Tugashi:
93
End kalit_belgi
Masalan:
Delimiter $$
……………………………
End$$
Ishni bajarish tartibi
1.
“Qurilma” jadvalini chaqiramiz:
So`rov: select * from qurilma;
Natija:
16.1 – rasm. Qurilma jadvalidagi ma’lumotlarni ko’rish
2.
Qurilma jadvalini chiqaruvchi sodda protsedura tuzamiz:
So` rov: Delimiter //
Create procedure chiqarish()
Begin
Select * from maxsulot;
End//
Call chiqarish(); //
94
Natija:
16.2 – rasm. Chiqarish() prosedurasini ishga tushirish natijasi
Endi boshqacharoq protsedura hosil qilamiz, yani “master” jadvalidan eng katta
yoshning qiymatini aniqlovchi protsedura tuzamiz:
Master jadvalini ko’ramiz:
So`rov: Select *from master;
Natija:
16.3 – rasm. Master jadvalidagi ma’lumotlarni ko’rsatuvchi so`rov
3.
Protsedura yaratamiz:
So`rov: Delimiter //
Create procedure katta_yosh(out k integer)
Begin
Select max(yoshi) into k from master;
End//
95
Natija:
16.4 – rasm. Max() funksiyasi qatnashgan prosedura yaratish
4.
Protsedurani chaqiramiz:
So`rov: Call katta_yosh(@eng_katta_yosh); //
Natija:
16.5 – rasm. Prosedurani chaqirish so`rovi
5.
Natijani ko’ramiz:
So`rov: Select @eng_katta_yosh;
Natija:
16.6 – rasm. Katta_yosh() prosedurasini chaqirish orqali olingan natija
Xaqiqatdan ham eng katta yoshdagi master 22 yoshda edi. (2-misol 1 –so’rov
natijasiga qarang)
Eslatma: bu yerda “//” belgi delimiter hisoblanadi u so’rov tugaganda qo’yiladi.
96
Vazifalar
1.Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu uchun
MySQL da protseduralar yarating va undan foydalaning.
2.Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Protsedura nima?
2. Protseduralarni yaratish qanday amalga oshiriladi?
3. Protsedurani chaqirish qanday amalga oshiriladi?
4. Delimiter belgisi nima uchun ishlanadi?
97
17 - LABORATORIYA ISHI
Mavzu: SQLda triggеrlar yaratish
MySQLda, trigger - bu bog'langan jadvalda sodir bo'lgan kiritish, yangilash yoki
o'chirish kabi hodisaga javoban avtomatik ravishda chaqiriladigan saqlanadigan
dastur. Masalan, jadvalga yangi qator qo'yilishidan oldin avtomatik ravishda ishga
tushadigan tetikni belgilashingiz mumkin.
MySQL INSERT, UPDATE yoki DELETE voqealariga javoban ishga
tushadigan triggerlarni qo'llab-quvvatlaydi.
SQL standarti triggerlarning ikki turini aniqlaydi: qator-darajali triggerlar va
bayonot darajasidagi triggerlar. Qo'shilgan, yangilangan yoki o'chirilgan har bir satr
uchun qator darajasidagi trigger faollashadi. Masalan, agar jadvalda 100 satr
qo'shilgan, yangilangan yoki o'chirilgan bo'lsa, ta'sirlangan 100 ta satr uchun trigger
avtomatik ravishda 100 martta chaqiriladi. Qancha qator qo'shilgan, yangilangan yoki
yo'q qilinganidan qat'iy nazar, bayonot darajasidagi trigger har bir operatsiya uchun
bir martta bajariladi.
MySQL da tiriggerlarning yaratilish umumiy sintaksisi:
CREATE TRIGGER trigger_nomi trigger_joylashishi trigger_buyrug’i
ON jadval_nomi FOR EACH ROW trigger_tanasi;
Bu yerda trigger ishlatilishi turlari:
1) Before (oldidan)
2) After (oxiridan) va boshqalar.
Trigger buyruqlari turlari:
1) Insert (kiritish)
2) Update (yangilash)
3) Delete (o’chirish) va boshqalar
98
Ishni bajarish tartibi
Bizda master jadvali bor edi. Triggerlar bilan ishlash uchun master0 degan
jadval yaratamiz:
17.1 – rasm. Master0 jadvalining yaratilishi
Endi triggerlarni yaratishni boshlaymiz:
1. Before update trigger
Master jadvaliga e’tibor qilaylik.
17.2 – rasm. Master jadvalidagi ma’lumotlarni ko`rish so`rovi
1.1.
Master_yangilash triggerini yaratamiz.
17.3 – rasm. Master_yangilash triggerini yaratish
1.2.
Master0 jadvalini ko’ramiz.
99
17.4 – rasm. Master0 jadvalidagi ma’lumotlarni ko`rish so`rovi
1.3. Yaratgan triggerimizni ishlatamiz, yani ID 1ga teng xodim yoshiga 2 ni qo’shib
yangilaymiz;
17.5 – rasm. Master jadvali
1.4.
Master jadvaliga yana bir nazar solsak o’zgarishni ko’ramiz;
17.6 –rasm. Update operatorini ishlatgandan keyin Master jadvalidagi ma’lumotlar
2. Master0 jadvalini ko`ramiz.
100
17.7 – rasm. Update opertaorini ishlatgandan keying master0 jadvali
2.1.
Master_yangilash1 triggerini yaratamiz;
17.8 – rasm. Master_yangilash triggerini yaratish
2.2.
Triggerni ishlatamiz; IDsi 3ga teng xodimning yoshiga 5 ni qo’shamiz;
Eslatma: bu ma’lumotni yuqorida master0 jadvaliga ham ko’chirdik;
17.9 – rasm. Trigger yaratilgan jadvalda Update operatorini qo’llash
2.3.
Master0 ni ko’ramiz;
17.10 rasm. Update operatorini ishlatilganidan keyin master0 jadvalidagi
ma’lumotlarning o’zgarishi
101
2.4. Master jadvalidagi o’zgarishni ham ko’ramiz;
17.11 – rasm. Master jadvalidagi Update operatorini qo`llagandan keying
o`zgarishlar
3. Before insert trigger:
3.1.
master_kiritish_oldin triggerini yaratamiz.
17.12 – rasm. Master_kiritish_oldin triggerini yaratish so`rovi
3.2.
Yaratgan triggerimizni ishlatamiz va natijasini master0 jadvalida ko’ramiz;
ya’ni biz trigger yordamida yangi satr kiritdik.
102
17.13 – rasm. Master_kiritish_oldin triggerni ishlashi natijasi
4. After insert trigger
4.1. Master_kiritish_keyin triggerini yaratamiz.
17.14 – rasm. Master_kiritish_keyin triggerini yaratish so`rovi
4.2.
Yaratgan triggerimizni ishlatamiz va natijasini master0 jadvalida ko’ramiz;
ya’ni biz trigger yordamida yana yangi satr kiritdik.
103
17.14 – rasm. Master_kiritish_keyin triggerining ishlash natijasi
5. Before delete trigger
5.1.
Master_ochirish_oldin triggerini yaratamiz;
17.15 – rasm. Master_ochirish_oldin triggerini yaratish
5.2.
Yaratgan triggerimizni ishlatamiz va natijasini master0 jadvalida ko’ramiz;
ya’ni biz trigger yordamida ID 5 ga teng satrni o’chirdik.
17.16 – rasm. Master0 jadvalidan satr o`chirish natijasi
104
6. After delete trigger
6.1. Master_ochirish_keyin triggerini yaratamiz;
17.17 – rasm. Master_ochirish_keyin triggerini yaratish
6.2.
Yaratgan triggerimizni ishlatamiz va natijasini master0 jadvalida ko’ramiz; yani
biz trigger yordamida ID 1 ga teng satrni ham o’chirdik.
17.18 – rasm. Master0 jadvalidan satr o`chirish natijasi
7. drop trigger:
7.1. Oldingi misollarda yaratgan master_ochirish_oldin triggerini o’chiramiz;
17.19 – rasm. Ma’lumotlar bazasidagi triggerni o’chirish
105
Vazifalar
1.Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu uchun
MySQL da protseduralar yarating va undan foydalaning.
2.Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Triggerni yaratish qanday amalga oshiriladi ?
2. Protseduralarni yaratish qanday amalga oshiriladi?
3. Protsedurani chaqirish qanday amalga oshiriladi?
4. Delimiter belgisi nima uchun ishlanadi?
106
18 - LABORATORIYA ISHI
Mavzu: C++ va ma’lumotlar bazasi yordamida oddiy interfeys yaratish
Ishdan maqsad: C++ va ma’lumotlar bazasi yordamida oddiy interfeys
yaratishni o`rganish va ko`nikmaga ega bo`lish.
Masalani qo`yilishi: C++ builder 6 dasturining ma`lumotlar bazasi bilan
ishlaydigan komponentalarni o`rganish va ular ishtirokida ma`lumotlar bazasi
ma`lumotlari bilan oddiy interfeys yaratish. Ma`lumotlar bazasi sifatida MySQL
va interfeys sifatida C++ builder 6 dasturlari o`rtasida aloqa o`rnatish.
Uslubiy ko`rsatmalar: C++ dasturlash tilida ma`lumotlar bazasi bilan
ishlaydigan ADO, DataAccess, DataControl va dbExpress kabi komponenta
bo`limlari mavjud. Ular orqali ma`lumotlar bazasi ustida amallar bajarilishi mumkin.
Interfeysda ma`lumotlar bazasini chaqirish uchun ADOConnection, ADOQuery va
DataSource komponentalaridan foydalanish kifoya. Ma`lumotlar bazasidagi ob`yektni
aks ettirish uchun esa DBGrid komponentasidan foydalaniladi. DBGrid komponentasi
jadvallarni aks ettiradigan komponenta hisoblanadi.
ADOConnection
komponentasi
ADO
bo`limida
joylashgan
bo`lib,
u
ma`lumotlar bazasi bilan aloqa o`rnatishga xizmat qiladi.
ADOQuery komponentasi ham ADO bo`limida joylashgan bo`lib bog`langan
ma`lumotlar bazasiga so`rovlar yozishda ishlatiladi.
DataSource komponentasi esa Data Access bo`limida joylashgan bo`lib,
so`rovlarni dbGrid komponentasi, ya’ni so`rovlarni jadvallarda aks ettiradi.
Yuqorida ko`rib chiqilgan komponentalar ma`lumotlar bazasi bilan aloqa
o`rnatishda muhim komponentalar hisoblanadi. Ma`lumotlar bazasini boshqarish
tizimining qaysi turi bo`lishidan qat`iy nazar bu komponentalardan foydalaniladi.
107
Ishni bajarish tartibi
Ma’lumotlar bazasini forma bilan bog’lashni boshlash uchun quyidagi
vazifalarni bajaramiz:
1. Kompyuter menyusida boshqaruvlar paneli tanlanadi.
18.1 – rasm. Asosiy kompyuter oynasi
2.Adminlashtirish bolimiga kiriladi va unda ma’lumotlar manbalari tanlanadi
18.2 – rasm. “Панель управления” oynasida “Администрирование” bo`limini
tanlash
108
18.3 – rasm. “Администрирование” ichidan ma’lumot manbalari “Источники
данных” tanlash
3. Qo’shish tugmasi bosiladi
18.4 – rasm. “Администратор источников данных” oynasi
109
4. MySQL ODBC 5.2 ANSI Driver tanlanadi
18.5 – rasm. Ma’lumotlar bazasi uchun mos drayver tanlash oynasi
5. Bog’lanishni oxiriga yetkazish uchun quydagi oyna ko’rsatilganidek to’ldiriladi va
test tugmasi bosiladi.
18.6 – rasm. MySQL Connector oynasi ma’lumotlarini to’ldirish
110
6. Test to`g`ri ishlasa, “Connection successful” yozuvi chiqadi.
18.7 – rasm. Bog`lanish muvaffaqiyatli amalga oshirilgani haqidagi xabar oynasi
111
7. C++ builder 6 programma ishga tushuriladi va ishga tushganda Form1 oyna
ochiladi.
18.8 – rasm. C++ builder 6 programmasi Form1 oynasi
Bu oynada bizga kerakli funksiyali “Icon”lar tanlanadi ADO menusidan “Ado
connection” va “Table Data Access” dan “Data Source “, “Data Controls”dan “DB
grid” va “DB navigator”larni tanlab olamiz. Natijada 18.10 - rasmdagi oyna xosil
bo`ladi.
18.9 – rasm. ADO menyusidan tanlangan Iconlarning Form1 oynasidagi holati
112
9. “Data connection”ni ustiga bosib burchakdagi oynadan “Connection String”ni
tanlab “Build”ni bosamiz, natijada 18.10 - rasmdagi oyna hosil bo`ladi.
18.10 – rasm. ADOConnection1 ConnectionString oynasi
18.11 – rasm. “Свойства канала передачи данных” oynasi
113
10. 18.11 - rasmdagi oynadan Microsoft OLE DB provider for ODBC drivers ni
tanlaymiz va natijada 18.12 rasmdagi oyna hosil bo’ladi undan avvaldan ochilgan
MySQL obrazni tanlaymiz
18.13 – rasm. MySQL obrazni tanlash oynasi
Keyingi qadam esa ADOQuery komponentasining SQL xususiyatga so`rov
yozish bilan davom ettiriladi.
114
18.14 rasm. SQL xususiyati oynasi
ADOQuery komponentasining Active xususiyatiga “True” belgilanadi.
Shundagina
kiritilgan
so`rov
ishga
tushadi
va
tekshiriladi.
DataSource
komponentasininng DataSet xususiyatiga “ADOQuery1” belgilanadi. Bu bilan ikkita
komponent o`rtasida aloqa o`rnatiladi.
Kiritilgan
so`rovni
aks
ettirish
uchun
yana
bir
komponenta
DBGrid komponentasi kerak bo`ladi. Bu komponenta Data Controls bo`limida
joylashgan. U ishga tushirilgandan keyin esa Data Source xususiyatiga “DataSource1”
belgilanadi. Tayyor bo`lgan loyiha kompilyatsiya qilinadi. Bu jarayon 18.15 - rasmda
aks ettirilgan.
18.15 - rasm. Kompilyatsiya jarayoni
Bu loyiha har safar ishga tushirilganda ma’lumotlar bazasi logini va paroli
tizim
tomonidan
so`raladi.
Buni
oldini
olish
uchun
komponentasining LoginPromt xususiyatiga “False” belgilanadi.
115
ADOConnection
Vazifalar
1.Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu uchun
yaratilgan ma’lumotlar bazasini forma bilan bog’lang.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Ma`lumotlar bazasi bilan aloqa bog`lashda qaysi komponentalardan
foydalaniladi?
2. ADO komponentalar bo`limida qanday komponentalar mavjud?
3. ADOConnect komponentasi nima vazifani bajaradi?
4. ADOQuery komponentasi xususiyatlari haqida ma`lumot bering.
5. DataSource komponentasi vazifasi.
6. DBGrid qanday komponenta?
7. Oracle bilan bog`lanishda C++ning o`ziga xos xususiyatlari nimada?
8. Oracle bilan bog`lanishda server nomiga nima yoziladi?
9. Kompilyatsiya jarayoni qanday amalga oshiriladi?
10.Qanday komponentalar forma osti komponentalari hisoblanadi?
116
19 - LABORATORIYA ISHI
Mavzu: C++ da ADO va ODBC dan foydalanib qatorlarga ma’lumot
kiritish, o`zgartirish va o`chirish
Ishdan maqsad: C++ da ADO va ODBC dan foydalanib qatorlarga ma’lumot
kiritish, o`zgartirish va o`chirishni o`rganish va ko`nikmaga ega bo`lish.
Masalani qo`yilishi: C++ dasturlash tilining
ishlashga
mo`ljallangan
komponentalardan
ma`lumotlar bazasi bilan
foydalanib
ma`lumotlar
bazasiga
ma`lumotlarni kiritish, o`zgartirish va o`chirish amallarini bajarish. Bu amallarni
DBNavigator komponentasi va so`rovlar orqali hosil qilish maqsadga muvofiqdir.
Uslubiy ko`rsatmalar: C++ da ADO va ODBC dan foydalanib qatorlarga
ma’lumot kiritish, o`zgartirish va o`chirish uchun kerakli komponentalarni ishga
tushirish
zarur.
komponentalar
Bu
tashkil
komponentalarni
qiladi.
Bu
asosini
18
laboratoriya
laboratoriyada
ko`rilgan
mashg`uloti
yuqoridagi
laboratoriya mashg`uloti davomi sifatida qaraladi. ADO va ODBC dan foydalanib
qatorlarga ma’lumot kiritish, o`zgartirish va o`chirishni tashkil qilish uchun
birinchi navbatda BDNavigator komponentasi ishga tushuriladi(Boshqa asosiy
komponentalar 18 - laboratoriyada ishlatilgan. Bu uning davomi sifatida ishlatiladi).
Ishni bajarish tartibi
1. “ADOConnection”da “connected”ni truega va “Login Prompt”ni falsega
o`zgartiramiz va “ADOTable1” da rejimni
“Active”da truega o’zgartirib
Connectionda ADOConnection1 ni tanlaymiz va ADOTabledan “Table name”dan
kerakli jadval nomini tanlaymiz. Natija ko’rinishi uchun Data Source1 dan
ADOtable1 ni DataSet menyusida tanlaymiz. Buni bajarilishi 19.1-rasm va 19.2rasmda ko`rsatilgan.
117
19.1-rasm. Ma’lumotlar bazasini C++ ga bog’lashda amalga oshiriladigan amallar
19.2 – rasm. Object inspector qismida ADOTable1ni tanlash amali
118
2. Shunda quydagi natijaga erishamiz va Data Navigatorni ham Data table 1 ga
bo’glaymiz. Bu bizga element qo`shish, o`chirish, yangilash uchun kerak
bo’ladi.(19.3-rasm)
19.3 - rasm. Data Navigatorni Data table1ga bog’lanishi
3. Form1ni ishlatib ko’ramiz va bir nechta ustun qo’shib o’chirib ko`ramiz.
(19.4 rasm)
19.4 – rasm. Form1 oynasini ishga tushirish natijasi
119
19.5 - rasm. C++ Builder 6 dasturining komponentalari
19.5 – rasmda ko`rsatilgan komponentalardan foydalanib interfeys orqali
ma`lumotlar bazasiga ma`lumot kiritish, o`zgartirish va o`chirish amallari bajariladi.
Endi
o`zimizning
4. DBNavigator
bazamizda
komponentasidan
bu
jarayonlarni
foydalanib
amalga
oshiramiz.
ma`lumotlar ustida
amallar
bajarishni ko`rib chiqamiz. DBNavigator komponentasi Data Control komponentalar
bo`limida joylashgan.
19.6 - rasm. Dastur oynasi
19.6-rasmda interfeys keltirilgan bo`lib, unda DBNavigator komponentasi
ishga tushirilgan. U komponentani o`lchamlarini
mavjud.
120
o`zgartirish imkoniyati
Ma`lumotlar
ustida
komponentasining DataSource
amallar
komponentasi
bajarish
uchun
DBNavigator
DataSource komponentasi nomiga
moslashtiriladi (19.7 rasm).
19.7 - rasm. DBNavigator xususiyati
19.7 - rasmda DBNavigator komponentasining xususiyatlari keltirilgan. Bu
xususiyatlar orqali komponentani o`lchamlarini o`zgartirish, formada joylashgan
o`rnini aniqlash, DataSourceni tanlash kabi xususiyatlarini ko`rish mumkin.
Barcha sozlamalarni o`rnatib bo`lgandan keyin loyixa ishga tushiriladi va
DBNavigator bilan Data Source bog`langanligi tekshirib ko`riladi (19.8 rasm).
19.8 - rasm. Loyixaning kompilyatsiya jarayoni
Interfeys orqali ma`lumotlar ustida amal bajarish uchun boshqa usullardan ham
121
foydalanish imkoniyati mavjud. Buning uchun Edit va Button komponentalaridan
foydalaniladi.
Qidirilayotgan mahsulot nomi Editda yoziladi va Button orqali
qidiruvni amalga oshirishni ko`rib chiqamiz.
19.9 - rasm. Edit va Button komponentasidan foydalanish
19.9
– rasmda ko`rsatilgan
chap tugmasi
ikki
marta
Button
bosiladi
va
komponentasi
dasturning
ustiga
kod
sichqonchani
qismiga
o`tiladi.
Button komponentasining kod qismiga o`tilgandan keyin quyidagi C++
operatorlari ketma ketligi yoziladi.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Edit komponentasidan ma`lumotni o`qish
String
s=`SELECT
*
FROM
MAHSULOT_NOMI='`+Edit1->Text+`'`;
//ADOQuery1 komponentasi bilan ishlash
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(s);
ADOQuery1->Open();
}
122
MAHSULOT
WHERE
Kod yozilgandan keyin dastur kompilyatsiya qilinadi va qidirilayotgan
mahsulot nomi yoziladi.
19.10 - rasm. Interfeys asosiy oynasi
19.10 – rasmda interfeysning asosiy oynasi keltirilgan bo`lib, unda “Oltin”
so`zi qidirilgan. Bu qidiruvni amalga oshirish uchun Edit komponentasiga
qidirilayotgan mahsulot nomi yoziladi va “Qidir” tugmasi bosiladi. Qaysidir
ma`noda bu qidiruv deyiladi. Aslida esa tanlash deb yuritiladi, ya`ni bir nechta
qatorlar
ichidan
kerakli bo`lganlarini ajratib olishdir. Bu vazifa tugmani
bosgandagina amalga oshadi. Chunki SQL so`rovlar va C++ kod belgilangan
tugmaning Click xossasi ichiga yozilgan. Interfeys orqali ma`lumotlarni o`zgartirish
va o`chirish imkoniyatlari ham mavjud.
123
Vazifalar
1.Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu uchun
yaratilgan forma bilan MBni bog‘lash.
2. Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Ma`lumotlar
bazasi
bilan
aloqa
bog`lashda
qaysi
komponentalardan
foydalaniladi?
2. Ma`lumotlarni intefeys orqali kiritishning qanday usullari bor?
3. DBNavigator qanday komponenta?
4. DataSource komponentasi vazifasi.
5. DBGrid va DBNavigatorni qanday qilib bog`lash mumkin?
6. Oracle bilan bog`lanishda C++ning o`ziga xos xususiyatlari nimada?
7. Qanday komponentalar forma osti komponentalari hisoblanadi?
8. C++da kod orqali ma`lumotlarni kiritish, o`zgartirish va o`chirish mumkinmi?
9. C++ dasturlash tilida SQL so`rovlarni aks ettirish mumkinmi?
10. Interfeys orqali ma`lumotlarni o`zgartirib ko`ring.
124
20 – LABORATORIYA ISHI
Mavzu: C++da Windows Forms Data Controldan foydalanish
Ishdan maqsad: C++da Windows Forms Data Controldan foydalanishni
o`rganish va ko`nikmaga ega bo`lish.
Masalani qo`yilishi:
C++ dasturlash tilining Data Controls komponentalar
bo`limida mavjud bo`lgan barcha komponentalarni amalda qo`llashdan iborat.
Bundan tashqari komponentalarning xususiyatarini o`rganib chiqish ham ko`zda
tutilgan.
Uslubiy ko`rsatmalar: C++ dasturlash tilida Data Controls komponentalar
bo`limi bo`lib, unda 15 ta komponenta joylashtirilgan. Bular bajaradigan vazifalariga
qarab ajratiladi. Asosan bu komponentalar ma`lumotlar bazasi ma`lumotlari bilan
ishlash uchun mo`ljallangan.
20.1 - rasm. Data Control komponentalar bo`limi
Data Controls komponentalar bo`limida mavjud bo`lgan komponentalar haqida
quyida keltirilgan.
-
DBGrid – bu ma`lumotlar bazasi ob`yektlarini intefeysda to`liqligicha aks
ettira oladigan yagona komponenta hisoblanadi. BDGrid
jadval ko`rinishi
shakllantiriladi. U har bir yacheykada joylashgan ma`lumotlarni ”ADOQuery”
komponentasining “SQL” xususyatiga yozilgan so`rov orqali oladi.
-
DBNavigator – bu komponenta orqali ma`lumotlar bazasi ob`yektlariga
to`g`ridan–to`g`ri murojaat qilish mumkin. Komponenta ma`lumotlarni kiritish,
o`zgartirish, o`chirish kabi amallarni bajarishga yordam beradi.
125
-
DBText – bu komponenta “Label”
komponentasiga o`xshash, lekin
buning text xossasi yo`q. U ma`lumotlarni ma`lumotlar bazasidan oladi. DBText
komponentasining “DataSource” va “DataField” xususiyatlari bo`lib, unda yaratilgan
datasource va belgilangan ob`yekt atributi ko`rsatiladi.
-
DBEdit – bu ma`lumotlar bazasidagi ob`yektning belgilangan taributi
elementini aks ettiradi.
-
DBMemo - Memo matnlarni bir necha qator qilib chiqarish
uchun
ishlatiladi. Bu matn chiqarish maydoni dasturda natijalarni chiqarishda qo`l keladi.
Natijani
chiqarishda
u
dastur
ichida
quyidagicha
ishlatiladi.
Memo1.Lines.add('Echim='+S); Memo maydonini tozalash esa natijani chiqarishdan
oldin modulda Memo1.Clear buyrug`ini berish bilan amalga oshiriladi.
-
DBListBox - komponenti ro`yxat va bir o`lchamli massiv ko`rinishdagi
ma’lumotlarni ekranga aks ettirishda ishlatiladi. Ma’lumotlarni kiritishda esa Edit
komponentasidan foydalaniladi. DBListBox komponentasi Standart komponentalar
palitrasida joylashgan.
-
DBComboBox - komponenti
ro`yxat
va
bir
o`lchamli
massiv
ko`rinishdagi ma’lumotlarni ekrandan kiritish uchun ishlatiladi. U DBListBox va
DBEdit komponentalarining birgalikdagi ishini bir o`zi bajaradi. Tashqi ko`rinishdan
bu komponent oddiy DBEdit kiritish qatorini eslatadi. Uning o`ng qismida pastga
belgisi bo`lib, kiritilayotgan ma’lumotlarni ko`rib borish mumkin.
-
DBCheckBox - bog`liq bo`lmagan tanlash tugmalarini yaratadi.
126
Bundan
tashqari
DBRadioGroup,
Data
Control
DBLookupListBox,
komponentalar
bo`limida
DBLookupComboBox,
DBImage,
DBRichEdit,
DBCtrGrid va DBChart komponentalari ham mavjud.
Quyida Data Control komponentalaridan bir nechta misollar keltiriladi. DBrid va
DBNavigator
komponentlalaridan
yuqoridagi
laboratoriya
ishlarida
misollar
keltirilgan. DBText va DBEdit komponentalaridan foydalanish ko`rib chiqilgan.
20.2 - rasm. DBText komponentasining ishlatilishi
20.2 - rasmda keltirilgan DBText komponentasini ishlatish ko`rsatilgan
bo`lib, uning
xususiyatiga
murojaatni
amalga
oshirish
zarur.
Bu
komponentaning DataSource va DataField xususiyatlari asosiy hisoblanadi. Bu
xususiyatlar yordamida ma`lumotlar bazasidan ma`lumotlarni o`qish imkoni mavjud
bo`ladi. Buning uchun DataSource xususiyati datasource nomiga va DataField
xususiyati esa ma`lumotlar bazasining ob`yekti atributi nomiga tenglashtiriladi.
Bu ikki xususiyat DBText komponentasini Label komponentasidan farqlab turadi.
Chunki bu xususiyatlar orqali ma`lumotlar bazasi bilan bog`lanish imkoniyati mavjud.
127
20.3 - rasm. DBText komponentasini ma`lumotlar bazasi bilan bog`lash
20.3
- rasmda
DBText
komponentasini
ikkita
xususiyati
ajratib
ko`rsatilgan. Ma`lumotlar bazasi bilan bog`lanishda bu xususiyatlar muhim
hisoblanadi.
Vazifalar
1.Yuqorida ko`rsatilganlardan foydalanib tanlangan variyantga muvofiq mavzu uchun
yaratilgan ma’lumotlar bazasini forma bilan bog’lang.
2.Bajarilgan ishlar haqida hisobot tayyorlang (1-2-ilovalarga qarang).
Nazorat savollari
1. Data Control komponentalar bo`limida qanday komponentalar aks ettirilgan?
2. DBGrid komponentasining vazaifasi?
3. Data Control bo`limining asosiy komponentalari.
4. DBText komponentasining vazifalari va xususiyatlari.
5. Ma`lumotlar bazasi bilan bog`lashda qaysi xususiyatlar muhim hisoblanadi?
6. DataSource ma`lumotlar bazasi bilan bog`lashda qanday ahamiyatga ega?
7. Komponentalarning DataField xususiyati orqali qanday amallarni bajarish
mumkin?
8. Data Control bol`imida nechta komponenta mavjud?
128
LABORATORIYA ISHLARINI BAJARISHGA TOPSHIRIQ
VARIANTLARI
1. Aeroport ma`lumotlar bazasini yaratish.
2. Avto salon ma`lumotlar bazasini yaratish.
3. Dekanat ma`lumotlar bazasini yaratish.
4. Do`kon ma`lumotlar bazasini yaratish.
5. Futbol klub ma`lumotlar bazasini yaratish.
6. Hokimiyat ma`lumotlar bazasini yaratish.
7. Asaka zavodi ma`lumotlar bazasini yaratish.
8. Dorixona ma`lumotlar bazasini yaratish.
9. Kafedra ma`lumotlar bazasini yaratish.
10.Kasalxona ma`lumotlar bazasini yaratish.
11.Kasb hunar kolleji ma`lumotlar bazasini yaratish.
12.Internet magazin ma`lumotlar bazasini yaratish.
13.Kutubxona ma`lumotlar bazasini yaratish.
14.Avtopark ma`lumotlar bazasini yaratish.
15.Maktab ma`lumotlar bazasini yaratish.
16.O`quv kursi ma`lumotlar bazasini yaratish.
17.Oliy o`quv yurti ma`lumotlar bazasini yaratish.
18.Minimarket ma`lumotlar bazasini yaratish.
19.Omborxona ma`lumotlar bazasini yaratish.
20.Web sayt ma`lumotlar bazasini yaratish.
21.Shahar ma`lumotlar bazasini yaratish.
22.Sport kompleksi ma`lumotlar bazasini yaratish.
23.Telefon Tarmoq shaxobchasi(TTSH) ma`lumotlar bazasini yaratish.
24.Go`zallik saloni ma`lumotlar bazasini yaratish.
25.Tuman ma`lumotlar bazasini yaratish.
26.Vokzal ma`lumotlar bazasini yaratish.
129
FOYDALANILGAN ADABIYOTLAR
1. В.П. Базы данных. Книга 2 распределенные и удаленные базы данных:
учебник.// Москва ИД «ФОРУМ» - ИНФРА-М. – 2018. – С 261.
2. Голицына О.Л. Базы данных: учеб. Пособие // – 4-е изд., перераб. И доп. –
М.: ФОРУМ: ИНФРА-М, 2018. – 400 с.
3. Мартишин С.А. Базы данных. Практическое применение СУБД SQL –и
NoSQL – типа для проектирования информационных систем: учеб. Пособие // Москва: ИД «ФОРУМ» - ИНФРА-М, 2019, – 368 с.
4. Rahul Batra. SQL Primer An Accelerated introduction to SQL Basics.// Gurgaon,
India. 2019. –P 194.
5. Поликов А.М. Безопасность Oracle глазами аудиториа: нападение и защита.
–Москва. 2017. –336 с.
6. Usmonov J.T., Xujaqulov T.A. Ma’lumotlar bazasini boshqarish tizimi// o`quv
qo`llanma. - Т. : Aloqachi, 2018. – 96 b.
7.
Usmonov J. T., Xo'jaqulov T. A. Ma'lumotlar bazasini boshqarish tizimi fanidan
laboratoriya ishlarini bajarish bo'yicha uslubiy ko'rsatma - Т. : TATU, 2016. – 55 b.
8. Eric Redmond, Jim R. Wilson. A Guide to Modern Databases and the NoSQL
MovementAQSH, 2015. – 347 с.
9. Elmasri, R., S. B. Navathe: Fundamentals of Database Systems (5th Ed.)//
Addison Wesley, 2015. – 671 р.
10. Fundamentals of database systems sixth edition. Ramez Elmasri. Department of
Computer Science and Engineering The University of Texas at Arlington. 2011. – 261
с.
11. Введение в Oracle 10g. Перри Джеймс, Пост Джеральд. 697 стр 2013
12. Диго С.М. Базы данных Проектирование и использование. издательство
"Финансы и статистика". 2005 г. – 592 с.
130
13. Конноли Т., Брегк К. Базы данных, проектирование, реализация и
сопровождения, теория и практика, Университет Пейсли, Шотландия, изд. М.СПБ.- Киев. 2003. – 264 с.
14. www.intiut.ru;
15. www.oracle.com
16. www.library.tuit.uz;
17. www.intuit.ru;
18. www.w3school.com;
19. www.ziyonet.uz;
131
1- ilova. “Ma’lumotlar bazasi” fanidan laboratoriya ishlari bo'yicha hisobot titul
varag`ini rasmiylashtirish misoli
O'ZBЕKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA
KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKЕNT AXBOROT TЕXNOLOGIYALARI UNIVЕRSITЕTI
“Axborot texnologiyalari” kafedrasi
Laboratoriya ishi bo`yicha
HISOBOT
Bajardi: _______________________________
Familiya
Tekshirdi:_______________________________
Familiya
Sana_____________
TOSHKENT 2020 yil
132
2-ilova. Ma’lumotlar bazasi fanidan tayyorlangan uslubiy ko’rsatmadagi
laboratoriya ishlarining hisobotini tayyorlash uchun ko’rsatmalar.
1-2 laboratoriya ishlarini bajarishdagi hisobotga talablar
Bajarilgan ishlar to'g'risidagi hisobotda quyidagilar bo'lishi kerak:
1. Laboratoriya ishi mavzusi.
2. Laboratoriya ishining maqsadi.
3. Mavzu bo'yicha qisqacha nazariy ma'lumotlar
4. Vazifa.
5. Tanlangan predmet sohasining tavsifi.
6. Ob’yektlar ro'yxati.
7. Korxona atributlari ro'yxati.
8. Ob’yektlar o`rtasidagi bog`lanishni aniqlash.
9. Mohiyat aloqa diagrammasini yaratish va chizib ko`rsatish. 2-laboratoriya uchun
relyatsion bog`lanishni o`rnatish va grafik ko’rinishda tasvirlash.
3-20 laboratoriya ishlarini bajarishdagi hisobotga talablar
Bajarilgan ishlar to'g'risidagi hisobotda quyidagilar bo'lishi kerak:
1. Laboratoriya ishi mavzusi.
2. Laboratoriya ishining maqsadi.
3. Mavzu bo'yicha qisqacha nazariy ma'lumotlar
4. Vazifaning variant bo’yicha bajarilishi.
5. Xulosa.
133
“Ma’lumotlat bazasi” fanidan laboratoriya ishlari
bo'yicha uslubiy ko'rsatma barcha bakalavr
yo`nalishida tahsil oluvchi talabalar uchun
AT kafedrasi majlisida ko`rib chiqildi
va nashr etishga ruxsat etildi,
20__yil______ ______________
“_____”- sonli bayonnoma
KI fakulteti IUK majlisida ko`rib
chiqildi nashr etishga ruxsat etildi,
20__yil______ ______________
“_____”- sonli bayonnoma
TATU ilmiy – uslubiy kengashi majlisida ko`rib
chiqildi va nashr etishga ruxsat etildi,
20__yil______ ______________
“_____”- sonli bayonnoma
Mualliflar: Usmonov J.T., Qosimova U., Pulatova Z. M., Abidova F.Sh.
Taqrizchilar: Nazirova E.SH., Ubaydullayeva SH.R.
Mac’ul muharrir: Qosimova U
Musahhihlar: Pulatova Z. M., Abidova F.Sh.
134
135
136
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )