ID_FUKARO
|
FAMILIYA
|
ISMI
|
YOSHI
|
FAOLIYAT
|
MAXALLA
|
(AI)
|
varchar(20)
|
varchar(20)
|
Int(1)
|
varchar(20)
|
varchar(50)
|
1
|
Allayarov
|
Jasurbek
|
19
|
Ishsiz
|
Nur
|
2
|
Axmedov
|
Shaxzod
|
21
|
Xodim
|
Jaslik
|
3
|
Berdanov
|
Jamshid
|
20
|
Talaba
|
Jaslik
|
4
|
Bozorboyev
|
Sarvarbek
|
35
|
Talaba
|
Nukus
|
5
|
Nomozov
|
Lazizjon
|
60
|
Nafaka
|
Nur
|
|
STIPENDIA
BAXO
|
PUL
|
Int(1)
|
Int(6)
|
3
|
350000
|
4
|
470000
|
5
|
600000
|
|
STUDENT
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
(AutoIncroment, PK)
|
varchar(50)
|
varchar(70)
|
Int(1)
|
Int(1) Default 3
|
Int(2)
|
Int(6)
|
STUDENT jadvaliga fakat bitta talabani INSERT operatori bilan kiritish:
INSERT INTO STUDENT (FIO, SPES, KURS, baho, YOSHI, STIPENDIA)
VALUES (‘Pardabaev Islam`, ‘DI`, 2, 4, 18, 0);
Eslatma. Jadvalga ma`lumot kiritishda avtohisoblagich (AutoIncroment) o`rnatilgan maydon ko`rsatilmaydi va unga qiymat ham berish mumkin emas.
Agar kiritilayotgan ma`lumotlar jadvaldagi atributlar ketma-ketligi bo`yicha bo`lsa, u holda atributlar ko`rsatilishi shart emas. Ma`lumotlarni kiritish operatori birdaniga bir necha satrlarni kiritish imkoniga ham ega.
INSERT INTO STUDENT VALUES (‘Alimov N, ‘KI`, 3, 3, 21),
(‘Azizov B`, ‘DI`, 2, 5, 22, 0);
Agar jadval atributlari o`rin almashib kelsa, u holda kiritilayotgan qiymatlar ham mos o`rin almashishi shart. Shuningdek, atributlarning qabul qiladigan aniqlanmagan qiymat (NULL) va bo`sh qiymat (‘‘) lari farqlanadi.
INSERT INTO STUDENT (FIO, YOSHI, baho, SPES, KURS)
VALUES (‘Zaripov F`, 32, 3, ‘‘, 4);
Jadvalga ma`lumot kiritishda atribut xossasiga NOT NULL o`rnatilmagan bo`lmaganlaridan tashqari boshqa atributlarga qiymat berish shart emas. Bunday holatda agar atributga Default xossasiga qiymat berilgan bo`lsa, avtomatik shu qiymat, aks holda NULL qiymat yoziladi.
INSERT INTO STUDENT (FIO, YOSHI)
VALUES (‘Rajapov Sadulla`, 19), (‘Sadikov M`, 24);
Yuqoridagi so`rov natijalari quyidagicha bo`ladi.
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
1
|
Pardabaev Islam
|
DI
|
2
|
4
|
18
|
0
|
2
|
Alimov N
|
KI
|
3
|
3
|
21
|
0
|
3
|
Azizov B
|
‘‘
|
2
|
5
|
22
|
0
|
4
|
Zaripov F
|
‘‘
|
4
|
3
|
32
|
|
5
|
Rajapov Sadulla`
|
|
|
3
|
19
|
|
6
|
Sadikov M
|
|
|
3
|
24
|
|
Agar jadvalni yaratishda ustun yoki atributga majburiy qiymat (NOT NULL) belgisi qo`yilgan bo`lsa, u holda INSERT operatorida joriy ustunning har bir satriga kiritiladigan qiymatg ko`rsatilishi kerak. Shuning uchun, agar jadvalning hamma ustuni majburiy qiymatli bo`lsa, u holda har bir yangi kiritladigan satrda barcha ustun uchun qiymat mavjud bo`lishi kerak va bunda ustunlar ro`yxatini ko`rsatish shart emas. Aks holda jadvalda kamida bitta maburiy qiymatli bo`lmagan ustun bo`lsa, u holda albatta ustunlar ro`yxatini ko`rsatish shart bo`ladi.
Qiymatlar ro`yxatida maxsus funksiyalar va ifodalar ko`rsatilish ham mumkin. Bunda ushbu funksiyalarning qiymatlari ma`lumotlarni kiritish momentida hisoblangan bo`lishi zarur.
INSERT operatorida ko`plab satrlar kiritilishi SQLda so`rov yaratuvchi va dasturchilarga yaxshi imkoniyat yaratadi. Bunda qiymatlar satri boshqa bir jadvaldan (ma`lum shartlar asosida) SELECT operatori orqali tanlab olinadi. Bu natijani esa to`g`ridan-to`g`ri INSERT operatori bilan boshqa jadvalga kiritish mumkin. Ammo faqat bitta jadvaldan olib yana shu jadvalga yozish mumkin emas.
Masalan FUQARO jadvalidan FAOLIYAT atributi “talaba” bo`lgan yozuvlardan faqat Familiya, ismi va yoshi maydonlarini STUDENT jadvaliga yozish qaralsin. Buni soddalashtirish uchun dastlab lozim bo`lgan tanlash so`rovi tuziladi. Ma`lumki, FUQARO jadvalida FAMILIYA va ISMI alohida atribut, lekin bu STUDENT jadvalida bitta atribut ekanligini nazarda tutib, ular so`rovda birlashtirib yuboriladi.
SELECT FAMILIYA || ISMI AS FIO, YOSHI
FROM FUQARO WHERE FAOLIYAT= ‘Talaba`
So`rov natijasi quyidagicha bo`ladi:
FIO
|
YOSHI
|
Berdanov Jamshid
|
20
|
Bozorboyev Sarvarbek
|
35
|
Bu so`rov natijasini STUDENT jadvaliga kiritish quyidagicha bo`ladi:
INSERT INTO STUDENT (FIO, YOSHI)
SELECT FAMILIYA || ISMI AS FIO, YOSHI
FROM FUQARO
WHERE FAOLIYAT= ‘Talaba`;
Bu so`rovning natijasi quyidagicha bo`ladi.
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
1
|
Pardabaev Islam
|
DI
|
2
|
4
|
18
|
0
|
2
|
Alimov N
|
KI
|
3
|
3
|
21
|
0
|
3
|
Azizov B
|
‘‘
|
2
|
5
|
22
|
0
|
4
|
Zaripov F
|
‘‘
|
4
|
3
|
32
|
|
5
|
Rajapov Sadulla`
|
|
|
3
|
19
|
|
6
|
Sadikov M
|
|
|
3
|
24
|
|
7
|
Berdanov Jamshid
|
|
|
3
|
20
|
|
8
|
Bozorboyev Sarvarbek
|
|
|
3
|
35
|
|
2. UPDATE ma`lumotlarni yangilash
Ma`lumotlarni yangilash operatori o`zgarish yuz berganda, ya`ni MBning jadvalidagi aniq atributlarni shartsiz yoki ma`lum shartlar bajarilganda o`zgarmas qiymatlarga yangilash vazifasini bajaradi.
Shart(lar)ni qanoatlantirgan holatda UPDATE operatori bajarilishi jihatidan uch guruhga ajratiladi:
Ko`rsatilgan atributga o`zgarmas qiymat bilan yangilash;
Atributni oldingi qiymatini qayta ishlab yangilash;
To`plamlararo qiymatlaridan moslarini yangilash.
Operatorning umumiy sintaksis diagrammasi quyidagicha beriladi
UPDATE jadval_nomi
SET ustun_nomi=yangi_qiymat
[WHERE tanlash_sharti]
Endi bularni aniq misollarda qo`rib chiqiladi.
1) Atributni o`zgarmas qiymat bilan yangilash. Student jadvalidagi kurs atributi bo`sh qiymatga ega va yoshi 22 dan kam bo`lgan talabalarni kursini 1 kurs deb o`zgartirish talab etilsin.
UPDATE STUDENT
SET KURS=1 WHERE KURS IS NULL AND YOSHI<=22
Agar yuqoridagi misolda yangilash so`rovida shart berilmasa, Student jadvalidagi barcha yozuvdagi Kurs atributini 1 ga o`zgartiradi.
Yangilash so`rovida birdaniga bir nechta ustunni yangilash mumkin. Bizdan Yoshi=22 dan katta va Spes atributi mavjud bo`lmagan yozuvlarning Spes=“AX”, Kurs=0 qilib o`zgartirilsin.
UPDATE STUDENT
SET KURS=0, SPES=“AX”
WHERE SPES IS NULL AND YOSHI>22
2) Atribut qiymatini qayta ishlab yangilash. Barcha talabalar kursini bittaga oshirish talab etilgan bo`lsin.
UPDATE STUDENT
SET KURS= KURS+1
Yuqoridagi 3 ta yangilash so`rovining natijasi quyidagicha bo`ladi:
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
1
|
Pardabaev Islam
|
DI
|
2
|
4
|
18
|
0
|
2
|
Alimov N
|
KI
|
4
|
3
|
21
|
0
|
3
|
Azizov B
|
‘‘
|
3
|
5
|
22
|
0
|
4
|
Zaripov F
|
‘‘
|
5
|
3
|
32
|
|
5
|
Rajapov Sadulla`
|
|
2
|
3
|
19
|
|
6
|
Sadikov M
|
AX
|
1
|
3
|
24
|
|
7
|
Berdanov Jamshid
|
|
2
|
3
|
20
|
|
8
|
Bozorboyev Sarvarbek
|
AX
|
1
|
3
|
35
|
|
3) To`plamlararo qiymatlaridan moslarini yangilash murakab so`rovdir kiradi. Misol uchun Student jadvalidagi Stipendia atributini Stipendia jadvalidagi Pul qiymati bo`yicha yangilash talab etilsin. Bunda dastlab jadvallardagi mos baho atributlari shartda taqqoslanadi va yangilashga Stipendia jadvalini Student atributiga Stipendia jadvalidagi Pul atribut qiymatlari beriladi.
UPDATE 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.
Do'stlaringiz bilan baham: |