, yangilash (update) va uchirish



Download 397 Kb.
bet3/11
Sana17.08.2021
Hajmi397 Kb.
#149477
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
Маълумотлар базаси 8-лекция узб

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.




Download 397 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish