• Nazorat savollari
  • UPDATE ma`lumotlarni yangilash operatsiyasi




    Download 84,3 Kb.
    bet16/18
    Sana12.01.2024
    Hajmi84,3 Kb.
    #135637
    1   ...   10   11   12   13   14   15   16   17   18
    Bog'liq
    Mavzu Microsoft Access dasturida hisobotlar yaratish. Reja-fayllar.org

    UPDATE 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

    Download 84,3 Kb.
    1   ...   10   11   12   13   14   15   16   17   18




    Download 84,3 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    UPDATE ma`lumotlarni yangilash operatsiyasi

    Download 84,3 Kb.