|
UPDATE STUDENT, STIPENDIA
SET
|
bet | 20/20 | Sana | 27.05.2024 | Hajmi | 1,82 Mb. | | #254618 |
Bog'liq 4-maruzaUPDATE STUDENT, STIPENDIA
SET STUDENT.STIPENDIA= STIPENDIA.PUL
WHERE STUDENT.BAXO=STIPENDIA.BAXO
Bu murakkab yangilash so`rovining natijasi quyidagicha bo`ladi:
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
1
|
Pardabaev Islam
|
DI
|
2
|
4
|
18
|
470000
|
2
|
Alimov N
|
KI
|
4
|
3
|
21
|
350000
|
3
|
Azizov B
|
‘‘
|
3
|
5
|
22
|
600000
|
4
|
Zaripov F
|
‘‘
|
5
|
3
|
32
|
350000
|
5
|
Rajapov Sadulla`
|
|
2
|
3
|
19
|
350000
|
6
|
Sadikov M
|
AX
|
1
|
3
|
24
|
350000
|
7
|
Berdanov Jamshid
|
|
2
|
3
|
20
|
350000
|
8
|
Bozorboyev Sarvarbek
|
AX
|
1
|
3
|
35
|
350000
|
Maxsus shartlar asosida yangilash UPDATE operatorini bitta amal uchun takror shartlarini o`zgartirib bajarishni optimallashtiradi. Misol uchun Student jadvalidagi Stipendia atributini bahoga nisbatan turlicha o`zgartirish, jumladan, 3 baho 10% kamaytirish, 4 baho 50% oshirish va 5 baho 2,5 karra ortishi talab etilgan bo`lsin. Odatda bunga ushbu ko`rinishda so`rov tuziladi:
UPDATE STUDENT SET STIPENDIA=0,9*STIPENDIA WHERE baho=3
UPDATE STUDENT SET STIPENDIA=1,5*STIPENDIA WHERE baho=4
UPDATE STUDENT SET STIPENDIA=2,5*STIPENDIA WHERE baho=5
Yuqoridagi yangilash so`rovlarni bitta so`rov orqali tuzishda dasturlash tillaridagi kabi IF yoki CASE kalit so`zlaridan foydalanish mumkin.1
UPDATE STUDENT
SET STIPENDIA=
CASE baho
WHEN 3 THEN 0,9*STIPENDIA
WHEN 4 THEN 1,5*STIPENDIA
WHEN 5 THEN 2,5*STIPENDIA
ELSE STIPENDIA
END
Eslatma. UPDATE operatori bilan jadval yozuvlarni o`zgartirish va DELETE operatori bilan o`chirish amallarini bajarishda ehtiyotkorlik talab etiladi. Ya`ni bu operatorlarda WHERE qismi to`g`ri qo`yishni unutmang. Chunki, bu operatorlar jadval yozuvlariga ta`sir qilib, ularni qayta tiklash muammosini keltirib chiqarishi mumkin. Agar tanlash sharti (WHERE qismi) ko`rsatilmagan bo`lsa, u holda o`zgartirish amali jadvlning barcha satrlari uchun bajariladi.
3. DELETE o`chirish operatori
Ma`lumotlarni o`chirish operatori jadvaldan shart bo`lsama hammasini, aks holda shartni qanoatlantiruvchi satr(lar)ni o`chirishi mumkin. Operatorning sintaksisi va diagrammasi quyidagicha beriladi.
DELETE FROM jadval _nomi
[WHERE tanlash_sharti]
Agar satrlarni tanlash sharti ko`rsatilmasa, u holda jadvaldagi barcha satrlar o`chiriladi. Natijada ma`lumotlarga ega bo`lmagan bo`sh bo`lgan jadval hosil bo`ladi.
DELETE operatorining WHERE qismida turlicha murakkablikdagi shartlarni, jumladan Like, Beetwen, In kabi peredikatlarni ishlatish mumkin. Endi bunga qaralayotgan jadvallar asosida misollar keltiriladi.
Fukaro jadvalidan ID_FUKARO'>ID_FUKARO atributi 2 ga teng yozuvni o`chirish.
DELETE FROM Fukaro
WHERE ID_FUK=2
Fukaro jadvalidan FAOLIYAT atributi “Nafaka” yoki “Ishsiz” va MAXALLA atributi “Nur” yoki “N” xarfdan boshlanuvchi yozuvlarni o`chirish
DELETE FROM Fukaro
WHERE (MAXALLA LIKE “Nur” OR MAXALLA LIKE “N%”) AND
(FAOLIYAT IN(“Nafaka”, “Ishsiz”))
Yuqoridagi ikkita so`rov natijasi quyidagicha bo`ladi.
ID_FUK
|
FAMILIYA
|
ISMI
|
FAOLIYAT
|
MAXALLA
|
|
1
|
Allayarov
|
Jasurbek
|
Ishsiz
|
Nur
|
X MAXALLA LIKE “Nur” va FAOLIYAT=“ Ishsiz”
|
2
|
Axmedov
|
Shaxzod
|
Xodim
|
Jaslik
|
X ID_FUKARO=2
|
3
|
Berdanov
|
Jamshid
|
Talaba
|
Jaslik
|
|
4
|
Bozorboyev
|
Sarvarbek
|
Talaba
|
Nukus
|
|
5
|
Nomozov
|
Lazizjon
|
Nafaka
|
Nukus
|
X MAXALLA LIKE “N%” va FAOLIYAT=“Nafaka”
|
ID_FUK
|
FAMILIYA
|
ISMI
|
FAOLIYAT
|
MAXALLA
|
3
|
Berdanov
|
Jamshid
|
Talaba
|
Jaslik
|
4
|
Bozorboyev
|
Sarvarbek
|
Talaba
|
Nukus
|
Endi DELETE operatori orqali boshqa jadval ma`lumotlariga bog`lab o`chirish (murakkab) so`rovini tuzish qaraladi. Misol uchun Fukaro jadvalidagi Familiya va Ismi atributlari birgalikda Student jadvalidagi FIO atributiga mos bo`lgan holatda yoki Student jadvalidagi Spes atributi ‘’ (bo`sh, lekin NULL emas) qiymatga ega bo`lgan yozuvlarni Student jadvalidan o`chirish talab etilsin.
DELETE FROM STUDENT
WHERE FIO IN(
SELECT FAMILIYA || ISMI AS FIO
FROM FUQARO)
OR FIO IS NULL
Bu murakkab o`chirish so`rovining natijasi quyidagicha bo`ladi:
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
1
|
Pardabaev Islam
|
DI
|
2
|
4
|
18
|
470000
|
2
|
Alimov N
|
KI
|
4
|
3
|
21
|
350000
|
5
|
Rajapov Sadulla`
|
|
2
|
3
|
19
|
350000
|
6
|
Sadikov M
|
AX
|
1
|
3
|
24
|
350000
|
DELETE operatsiyasini bajarishda unda qatnashgan qism so`rovda satrlar o`chiriladigan jadval ko`rsatilmasligi kerak. Ma`lumotlarni manipulyatsiyalash operatsiyalarining barchasi MBning butunligi tushunchasi bilan bog`langan. Manipulyatsiyalash amallari sintaktik jihatdan to`g`ri bo`lsada butunlik talablari tufayli bajarilmasligi mumkin.
Nazorat savollari
SQL tilida ma`lumotlarni manipulyatsiya qilish operatorlari qanday?
Jadvallarga ma`lumot kiritish operatori shakllari qanday?
Yangilash operatori bajarilishi jihatidan turlari qanday?
DELETE operatori sintaksini bayon qiling.
DML guruh operatorlarining qaysi birlarida WHERE ishlatish mumkin emas?
DML guruh operatorlari tarkibida qaysi peridak
Nazorat savollari
SQL standartlari va uning rivojlanish bosqichlari
SQL tili operatorlarning formatiga bo`lgan talablar
SQL operatorlari guruhlarini vazifasini tushuntiring
SQL tilidagi asosiy ma`lumot toifalari qanday?
Jadvallarning sxemasi deganda nimani tushuniasiz?
Jadval yaratishdagi birlamchi va ikkilamchi kalitlarning mohiyati va farqi nimadi?
Jadval attributlariga cheklov va izox qanday o`rnatiladi?
INDEX nima va ular bilan ishlash operatorlari qanday?
Mavjud jadvalni tahrirlash buyruqlari sintaksisini tushuntiring.
SQL tilida ma`lumotlarni manipulyatsiya qilish operatorlari?
SELECT operatori sintaksisidagi kalit so`zlar ma`nosi?
SQL so`rovida ishtiroki shart bo`lgan kalit so`zlar qaysilar?
SQL tilida mantiqiy operatorlar qaysilar va qaerda qo`llaniladi?
Mantiqiy operatorlar bajarilishidagi bir-biridan ustuvorligini asoslang?
Maxsus mantiqiy operatorlarni sanang.
So`rovda BERWEEN peridikati ekvivalent ifoda qanday?
ANY va ALL peridikatlarini IN peridikatidan farqi nimada?
Qism so`rovlardada qo`llaniladigan asosiy peridikatlar qaysilar?
|
| |