|
UPDATE ma`lumotlarni yangilash operatsiyasi
|
bet | 16/18 | Sana | 12.01.2024 | Hajmi | 84,3 Kb. | | #135637 |
Bog'liq Mavzu Microsoft Access dasturida hisobotlar yaratish. Reja-fayllar.orgUPDATE ma`lumotlarni yangilash operatsiyasi.
Ma`lumotlarni yangilash operatsiyasi o„zgarish yuz berganda va mos holda bu
o„zgarishni MB da akslantirish uchun ishlatiladi.
UPDATE jadval_nomi SET ustun_nomi = yangi_qiymat [WHERE
tanlash_sharti]
Bu erda ham WHERE qismi DELETE operatoridagi kabi ko„rsatilishi shart
emas. U DELETE operatoridagi kabi bir xil vazifani bajaradi va o„zgartirish amali
bajariladigan satrlarni tanlash imkonini beradi. Agar tanlash sharti (WHERE
qismi) ko„rsatilmagan bo„lsa, u holda, o„zgartirish amali jadvalning barcha satrlari
uchun bajariladi.
Masalan, talaba Fozilova K. E. MBB fanidan «2» baho oldi, keyin uni «3»
bahoga qayta topshirgan bo„lsin. Bu holatga mos holda R1 jadvalini o„zgartirish
amali quyidagi operator bilan amalga oshiriladi:
UPDATE R1 SET R1.Otsenka = 3
WHERE R1.FIO = „Fozilova K.E.‟ AND R1.Distsiplina = „Bazi dannix‟
Qanday holatlarda bir nechta satrlarni o„zgartirish zarurati paydo bo„ladi? Bu
kam uchraydigan masala emas. Masalan, agar guruhlar jadvalidagi guruhlarni
kursini bittaga oshirish zarur bo„lsa, quyidagi o„zgartirish amalini bajarish
mumkin. Guruhlar jadvali quyidagicha sxemaga ega bo„lsin:
R4 = < Guruh, Kurs>
UPDATE R4 SET R4.Kypc = R4.Kypc + 1
Nazorat savollari
1. INSERT operatorining vazifasi haqida tushuncha bering.
2. INSERT operatorining sintaksisi haqida tushuncha bering.
3. UPDATE operatorining vazifasi haqida tushuncha bering.
4. UPDATE operatorining sintaksisi haqida tushuncha bering.
5. DELETE operatorining vazifasi haqida tushuncha bering.
6. DELETE operatorining sintaksisi haqida tushuncha bering.
Mavzu: SQL- Select instruksiyasining kengaytirilgan imkoniyatlari. Mavjud
ma’lumotlarni tasniflash.
Reja:
1. Sodda so`rovlar.
2. Ma`lumotlarni tavsiflash.
Sodda so`rovlar
SELECT operatori: So`rov SELECT operatori yordamida bajariladi va uning
sintaksisi quyidagicha:
SELECT [ALL/DISTINCT] /*
FROM
[WHERE ]
[ORDER BY < atributlar ro`yxati >]
[GROUP BY < atributlar ro`yxati >]
[HAVING ]
[UNION< SELECT operatorli ifoda>]
Kvadrat qavslarda operatorni yozishda qatnashishi shart bo`lmagan elementlar
ko`rsatilgan.
SELECT, barcha so`rovlar shu kalit so`z bilan boshlanadi. Bu so`zdan keyin
so`rov natijasi sifatida qaytariladigan ma`lumot elementlarini ko`rsatish lozim. Bu
elementlar vergul bilan ajratilgan holda beriladi. So`rov natijasi alohida
vaqtinchalik jadvalda saqlanadi va ro`yxatni har bir elementi uchun so`rov
natijalari jadvalida bitta ustun hosil qilinadi. Natija jadvali ustunlari qaytariladigan
ustunlar ro`yxati elementlari tartibi bo`yicha tartiblanadi. Qaytariladigan qiymat
o`zida quyidagilarni ifodalashi mumkin.
o Ustun nomi. So`rov uchun murojaat qilinayotgan jadval ustunlaridan biri
nomi ko`rsatiladi. Bu holda bu ustunning har bir satri qiymati olinadi va so`rov
natijasiga chiqariladi.
o O`zgarmas. So`rov natijasining barcha satrlari bir xil qiymat bilan
chiqariladi.
o Ifodada berilgan formula orqali hisoblash bajarilib olingan qiymatlar so`rov
natijasiga chiqariladi.
ALL kalit so`zi natijaga shartni qanoatlantiruvchi barcha satrlar, shuningdek
takrorlanuvchi satrlar ham kirishini bildiradi.
DISTINCT kalit so`zi natijaga takrorlanuvchi satrlar kiritilmasligini bildiradi.
Keyin boshlang`ich jadvaldagi atributlar ro`yxati ko`rsatiladi. Bu atributlar
natijaviy jadvalga kiritiladi.
Belgisi natijaga so`rov uchun murojaat qilinayotgan jadval ustunlarining barcha
ustunlari kiritilishini bildiradi.
FROM kalit so`zidan keyin so`rov uchun murojaat qilinayotgan jadval nomi
beriladi. Murakkab so`rovlarda ba`zan jadvallar bir nechta bo`lishi mumkin va ular
spetsifikatorlari bilan beriladi. Spetsifikatorlar bir-biridan vergul bilan ajratiladi.
Har bir jadval spetsifikatori so`rov natijasiga chiqariladigan ma`lumotlarni o`zida
saqlovchi jadvalni ifodalaydi. Bunday jadvallar so`rov jadvallari deyiladi. Chunki,
so`rov natijalari jadvalida saqlanadigan barcha ma`lumotlar ulardan olinadi.
WHERE tanlash ifodasi kalit so`zidan keyin jadval satrlarini tanlab olish sharti
ko`rsatiladi. Bunda natijaviy jadvalga WHERE ifodasidagi shart rost qiymat qabul
qiladigan satrlar kiritiladi.
ORDER BY kalit so`zi natijaviy jadval satrlarini ko`rsatilgan ustunlar ro`yxati
bo`yicha tartiblash amalini bildiradi.
GROUP BY kalit so`zidan keyin guruxlanadigan atributlar ro`yxati ko`rsatiladi.
HAVING kalit so`zidan keyin GROUP BY kalit so`zi yordamida tuzilgan
guruhlarni har bir guruhiga qo`yiladigan shartlar ko`rsatiladi.
FROM, WHERE va ORDER BY kalit so`zlari SQL tilining boshqa
manipulyatsiyalash operatorlarida ham shu tarzda ishlatiladi.
SELECT -- ALL ------ sxema , ustun ---
-- DISTINCT -- ---- * -----------
FROM -- sxema , jadval .. -------------
WHERE -- izlash shartlari ------------
GROUP BY -- sxema , ustun ----------
HAVING -- izlash sharti ---------------
ORDER BY – tartiblash spetsifikatori --------
So`rovlar yaratishni misol orqali ko`rib o`tamiz.
11.1.1. Misol. Talabalarning fanlardan olgan baholari jadvallarini tuzing va
so`rovlarni amalga oshiring.
1. Talabalar ro`yxati jadvali
Student
student – jadval nomi
id_st – tartib raqami, birlamchi kalit.
Stfam – – talabalar familiyasi
Stname – talabalar nomi
2. Talabalar imtihon topshirgan fanlar
ro`yxati jadvali
exam_st
exam_st – jadval nomi
id_ex – tartib raqami, birlamchi kalit.
Subject – fanlar nomi
Date – fandan imtihon topshirilgan sana
id_st
|
Stfam
|
Stname
|
1
|
Xasanov
|
Salim
|
2
|
Karimov
|
Bobur
|
3
|
Jabborov
|
Soli
|
id_ex
|
Subject
|
Date
|
1
|
Matematika
|
10.05.2009
|
2
|
Fizika
|
15.05.2009
|
3
|
Informatika
|
25.05.2009
|
3. Talabalarning imtihon topshirgan fanlardan olgan baholari jadvali
mark_st
mark_st – jadval nomi
id_ex – talaba tartib raqami.
id_st – talaba tartib raqami. Subject – fanlar nomi
mark – talabaning fandan imtihon bahosi
(id_ex, id_st) - birlamchi kalit.
- Barcha talabalar ro`yxatini tanlash va tasvirlash.
SELECT * FROM student
yoki
SELECT id_st, stfam, stname FROM student
- Agar ushbu so`rovga ORDER BY stfam ifodasi qo`shilsa, u holda ro`yxat
familiya bo`yicha tartiblanadi.
SELECT * FROM student ORDER BY stfam
- So`zsiz tartiblash o`sish bo`yicha bajariladi. Agar kamayish bo`yicha
tartiblash kerak bo`lsa, u holda oxirgi ifodadagi atribut nomidan keyin DESC so`zi
qo`shiladi..
SELECT * FROM student ORDER BY stfam DESC
- «1» kodli talaba olgan baholar ro`yxatini tanlab olish va tasvirlash
SELECT id_st, mark FROM mark_st Where id_st = 1
- Imtihonlardan kamida bitta 2 yoki 3 baho olgan talabalar kodini tanlab olish.
WHERE so`zidan keyin solishtirish amallarini (<, >, =, <> va h.k.) va mantiqiy
operatorlar qatnashgan ifodalarni joylashtirish mumkin.
SELECT id_st, mark FROM mark_st WHERE (mark >= 2) AND (mark <= 3)
SQL tilida shart ifodalarini tuzish uchun solishtirish va mantiqiy operatorlardan
tashqari yana bir qator maxsus operatorlar qo`llaniladi. Bu operatorlar dasturlash
tillarida mavjud emas. Bu operatolar:
IN – biror qiymatlar to`plamiga tegishliligini tekshirish;
id_ex
|
id_st
|
mark
|
2
|
2
|
3
|
3
|
1
|
2
|
1
|
1
|
4
|
3
|
2
|
5
|
2
|
1
|
3
|
1
|
2
|
2
|
2
|
3
|
4
|
1
|
3
|
5
|
3
|
3
|
3
|
Student
|
exam_st
|
id_st
|
id_ex
|
mark_st
|
|
id_ex
id_st
|
|
BETWEEN – biror qiymatlar diapozoniga tegishliligini tekshirish;
LIKE – namuna bilan mosligini tekshirish;
IS NULL – qiymat mavjudmasligini tekshirish.
IN operatori biror qiymatlar to`plamiga tegishlilikni tekshirish uchun
ishlatiladi.
- Quyidagi so`rov oxirgi keltirilgan misoldagi so`rov natijalarini beradi
(Imtihonlardan kamida bitta 2 yoki 3 baho olgan talabalar kodini tanlab oladi)
SELECT id_st, mark FROM mark_st WHERE mark IN (2,3)
- Xuddi natijani BETWEEN operatoridan foydalanib olish mumkin:
SELECT id_st, mark FROM mark_st WHERE mark BETWEEN 2 AND 3
- Familiyalari A harfi bilan boshlanuvchi talabalar ro`yxatini tanlab olish.
Bunday holatda 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, stfam, stname FROM student WHERE stfam LIKE «A%»
Ko`pincha ustunlardagi minimal, maksimal yoki o`rtacha qiymatlarni
hisoblashga to`g`ri keladi. Masalan, keltirilgan jadvallarda o`rtacha bahoni
hisoblash mumkin. Bunday hisoblashni bajarish uchun SQL tilining maxsus
agregat funktsiyalari mavjud:
MIN() – ustundagi minimal qiymat;
MAX() – ustundagi maksimal qiymat;
SUM() – ustundagi qiymatlar summasi;
AVG() – ustundagi qiymatlarni o`rtachasi;
COUNT() – ustundagi NULL dan farqli qiymatlar miqdori.
- Quyidagi so`rov talabalar olgan baholarning o`rtachasini hisoblaydi.
SELECT AVG(mark) FROM mark_st
- Albatta, agregat funktsiyalarini WHERE so`zi bilan birgalikda qo`llash
mumkin. Quyidagi so`rov 100 kodli talabaning imtihonlardan olgan baholarining
o`rtachasini hisoblaydi:
SELECT AVG(mark) FROM mark_st WHERE id_st = 100
- Navbatdagi so`rov 10 kodli talabaning o`rtacha bahosini hisoblaydi:
SELECT AVG(mark) FROM mark_st WHERE id_ex = 10
- SQL tili ko`rib o`tilgan mexanizmiga qo`shimcha ravishda agregat
funktsiyalarni to`la jadval uchun emas, balki guruhlangan qiymatlar uchun qo`llash
imkonini beruvchi vosita, GROUP BY mavjud. Masalan, har bir talabani
imtihonlardan olgan baholarining o`rtachasini aniqlash mumkin. Buning uchun
quyidagi so`rov beriladi:
SELECT id_st, AVG(mark) FROM mark_st GROUP BY id_st
- Bu imkoniyat ham odatdagidek WHERE so`zi bilan birgalikda qo`llanilishi
mumkin. Bu so`rovni bajarishda MBBT avval jadvaldan WHERE ifodasidagi
shartni qanoatlantiruvchi satrlarni tanlab oladi, keyin tanlangan satrlarni guruhlash
va agregatlash amalini bajaradi.
Quyidagi so`rov har bir talabaning 100 kodli imtihondan olgan baholarining
o`rtachasini aniqlaydi.
SELECT id_st, AVG(mark) FROM mark_st WHERE id_ex = 100 GROUP BY
id_st
Ko`rib turganimizdek guruhlash bittadan ko`p maydon bo`yicha bajarilishi
mumkin. GROUP BY sektsiyasiga ega bo`lgan so`rovlar uchun quyidagi muhim
cheklanish mavjud: bunday so`rovlar natijasi tarkibiga guruhlash bajarilgan
ustunlar va agregatlash natijasiga ega bo`lgan ustunlar kiradi.
- SQL tilining imkoniyatlaridan biri, masalan, ixtiyoriy matnni so`rov tarkibiga
kiritish mumkin. Bunga misol keltiramiz:
SELECT 'O`rtacha ball =’, AVG(mark) FROM mark_st WHERE id_ex = 10
Ushbu so`rov natijasida foydalanuvchi faqat oddiy sonlarni emas, balki matnni
ham ko`radi.
Bir necha jadvallardan ma`lumotlarni tanlash uchun SQL ni qo`llash. Shu
paytgacha faqat bitta jadvaldan ma`lumotlarni tanlash misollari keltirildi. Bir necha
jadvallardan ham ma`lumotlarni tanlab olish mumkin va ba`zi holatlarni misollar
orqali ko`rib o`tamiz.
Relyatsion model talabiga ko`ra, ma`lumotlar tanlab olinadigan jadvallar birgabir yoki birga-ko`p shaklda bir biri bilan bog`langan.
11.1.1. Misoldagi student, mark_st va exam_st jadvallari ER-diagrammasiga
qarang.
mark_st jadvali id_ex maydoni bo`yicha exam_st jadvali bilan bog`langan.
mark_st jadvali id_st maydoni bo`yicha student jadvali bilan bog`langan.
Masalan, talabalar ro`yxatini imtihonlardan olgan baholari bilan birgalikda
tanlash zarur bo`lsin. Buning uchun quyidagi so`rov beriladi:
SELECT student.stfam, student.stname, mark_st.id_ex, mark_st.mark
FROM student, mark_st WHERE student.id_st = mark_st.id_st
Keltirilgan ko`p jadvalli so`rov bir jadvalli so`rovdan quyidagilar bilan farq
qiladi.
1. FROM sektsiyasida ikkita jadval ko`rsatilgan.
2. Jadvallr soni bitta ko`p, shuning uchun ko`rsatilgan maydonlar nomining bir
qiymatliligi yo`qoladi. Masalan, ko`p hollarda maydonni FROM da ko`rsatilgan
jadvallar ro`yxatidagi qaysi jadvaldan olish noma`lum bo`lib qoladi. Maydon
nomlarining ko`p qiymatliligini bataraf etish uchun maydon nomida perefiks -
jadval nomi qo`shimcha qilinadi. Jadval nomi maydon nomidan nuqta bilan
ajratiladi.
3. WHERE ifodasida jadvallarni solishtirish sharti ko`rsatiladi.
Ko`rinib turganidek jadval nomidan iborat prefiksdan foydalanish so`rovni
murakkablashtiradi. Bunday murakkablikni bartaraf etish uchun psevdonim
ishlatiladi. Yuqoridagi so`rovni quyidagicha yozish mumkin:
SELECT E.stfam, Estname, M.id_ex, M.mark FROM student E, mark_st M
WHERE E.id_st = M.id_st
|
| |