• Masalaning qoʻyilishi: ma‘lumotlar bazasini boshqarish vositalari yordamida ma‘lumotlarni qayta ishlash. Uslubiy koʻrsatmalar
  • ALTER( изменять-oʻzgartirish ) INSERT (вставка-qoʻyish) SELECT
  • Oʻzbеkistоn rеspublikаsi оliy vа oʻrtа mаxsus tа’lim vаzirligi islom karimov nоmidаgi




    Download 2,08 Mb.
    Pdf ko'rish
    bet13/19
    Sana17.05.2024
    Hajmi2,08 Mb.
    #240356
    1   ...   9   10   11   12   13   14   15   16   ...   19
    Bog'liq
    МББваДТ (1 курс)tayyor

    4-
    laboratoriya ishi 
     SQL tilida cheklovlar turlari va oʻrnatish vositalaridan foydalanib 
    masalalar yechish 
     
    Ishdan maqsad:
    ma‘lumotlar bazasini boshqarish dasturiy vositasi 
    yordamida ma‘lumotlarni qayta ishlash, tahrirlash koʻnikmalariga ega 
    boʻlish. 
    Masalaning qoʻyilishi: 
    ma‘lumotlar bazasini boshqarish vositalari 
    yordamida ma‘lumotlarni qayta ishlash. 
    Uslubiy koʻrsatmalar
    : SQL tili operatorlarni erkin formatda yozishini 
    ta'minlaydi. Buning ma‘nosi, operatorlar elementlarini yozilishi ekrandan 
    fiksirlangan joylarga bogʻliq emas. Komanda strukturasi bir qancha kalit 
    xizmatchi soʻzlar bilan beriladi, masalan: 
    ALTER(
    изменять-oʻzgartirish

    INSERT 
    (вставка-qoʻyish) 
    SELECT
    (выбрать-ajratib olish) 
    SQL operatori xizmatchi soʻzlar va foydalanuvchi qoʻllaydigan 
    soʻzlardan tashkil topadi. 
    Mavjud jadvalni oʻzgartirish, xususan, ustunlarni qoʻshish yoki olib 
    tashlash, ustunlar turini oʻzgartirish va hokazolar odatiy hol emas. Ya'ni 
    jadvalning ta'rifini oʻzgartirishingiz kerak boʻladi. Buning uchun quyidagi 
    rasmiy sintaksisga ega ALTER TABLE ifodasidan foydalaning: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    ALTER
    TABLE
    название_таблицы

    ADD
    название_столбца 
    тип_данных_столбца 
    [ограничения_столбца] | 
    DROP
    COLUMN
    название_столбца |
    ALTER
    COLUMN
    название_столбца параметры_столбца |
    ADD
    [CONSTRAINT] определение_ограничения |
    DROP
    [CONSTRAINT] имя_ограничения}
    Keling, jadvalni oʻzgartirishning ba'zi imkoniyatlarini koʻrib chiqaylik. 
    Yangi ustun qoʻshish 
    Mijozlar jadvaliga yangi "Telefon" ustunini qoʻshamiz: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    ADD
    Phone CHARACTER
    VARYING(20) NULL;
    Bu yerda Telefon ustuni CHARACTER VARYING (20) turida boʻlib, 
    uning uchun NULL atributi aniqlangan, ya‘ni ustun null boʻladi. Agar null 


    44 
    boʻlmasligi kerak boʻlgan ustun qoʻshishimiz kerak boʻlsa-chi? Agar 
    jadvalda ma‘lumotlar mavjud boʻlsa, quyidagi buyruq bajarilmaydi: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    ADD
    Address CHARACTER
    VARYING(30) NOT
    NULL;
    Shuning uchun, bu holda, yechim DEFAULT atributi orqali standart 
    qiymatni oʻrnatishdir: 
    1. 
    2. 
    3. 
    ALTER
    TABLE
    Customers
    ADD
    Address CHARACTER
    VARYING(30) NOT
    NULL
    DEFAULT
    'Неизвестно';
    Ustunni oʻchirish 
    Mijozlar jadvalidan Manzil ustunini olib tashlaymiz: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    DROP
    COLUMN
    Address;
    Ustun turini oʻzgartirish 
    Turni oʻzgartirish uchun TYPE kalit soʻzi ishlatiladi. Mijozlar 
    jadvalidagi FirstName ustunining ma‘lumotlar turini VARCHAR (50) ga 
    oʻzgartiramiz (aka VARYING CHARACTER (50)): 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    ALTER
    COLUMN
    FirstName TYPE VARCHAR(50);
    Ustun cheklovlarini oʻzgartirish 
    Cheklov qoʻshish uchun SET iborasidan keyin cheklovdan foydalaning. 
    Masalan, FirstName ustuni uchun NOT NULL cheklovini oʻrnatamiz: 
    1. 
    2. 
    3. 
    ALTER
    TABLE
    Customers 
    ALTER
    COLUMN
    FirstName 
    SET
    NOT
    NULL;
    Cheklovni olib tashlash uchun DROP operatoridan keyin cheklovdan 
    foydalaning. Masalan, yuqoridagi cheklovni olib tashlaymiz: 
    1. 
    2. 
    3. 
    ALTER
    TABLE
    Customers 
    ALTER
    COLUMN
    FirstName 
    DROP
    NOT
    NULL;


    45 
    Jadval cheklovlarini oʻzgartirish 
    CHECK cheklovini qoʻshish: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    ADD
    CHECK
    (Age > 0);
    PRIMARY KEY asosiy kalitini qoʻshish: 
    1. 
    2. 
    ALTER
    TABLE
    Customers 
    ADD
    PRIMARY
    KEY
    (Id);
    Bunday holda, jadvalda PRIMARY KEY chekloviga ega boʻlmagan Id 
    ustuni allaqachon mavjud deb taxmin qilinadi. Va yuqoridagi skript 
    yordamida PRIMARY KEY cheklovi oʻrnatiladi. 
    UNIQUE cheklovini qoʻshish - elektron pochta ustuni uchun noyob 
    qiymatlarni belgilang: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    ADD
    UNIQUE
    (Email);
    Cheklov qoʻshsangiz, ularning har biriga ma‘lum nom beriladi. 
    Masalan, 
    CHECK 
    uchun 
    yuqorida 
    qoʻshilgan 
    cheklov 
    customer_age_check deb nomlanadi. Cheklovlarning nomlarini pgAdmin 
    orqali jadvalda koʻrish mumkin. 
    CONSTRAINT iborasi yordamida cheklovni qoʻshganda, biz ham aniq 
    nom berishimiz mumkin. 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    ADD
    CONSTRAINT
    phone_unique UNIQUE
    (Phone);
    Bunday holda, cheklov "telefon_unique" deb nomlanadi. 
    Cheklovni olib tashlash uchun siz uning nomini bilishingiz kerak, bu 
    DROP CONSTRAINT ifodasidan keyin belgilanadi. Masalan, yuqoridagi 
    qoʻshilgan cheklovni olib tashlaymiz: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    DROP
    CONSTRAINT
    phone_unique;
    Ustun va jadval nomini oʻzgartirish 
    Manzil ustunining nomini Shaharga oʻzgartiring: 


    46 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    RENAME COLUMN
    Address TO
    City;
    Mijozlar jadvalini Foydalanuvchilar deb oʻzgartiring: 
    1. 
    2. 
    ALTER
    TABLE
    Customers
    RENAME TO
    Users;
    Ma‘lumotlarni qoʻshish uchun quyidagi rasmiy sintaksisga ega boʻlgan 
    INSERT buyrugʻi ishlatiladi: 
    1. 
    2. 
    INSERT
    INTO
    имя_таблицы (столбец1, столбец2, ... 
    столбецN) 
    VALUES
    (значение1, значение2, ... значениеN)
    INSERT INTO - jadval nomidan soʻng, siz ma‘lumotlarni 
    qoʻshishingiz kerak boʻlgan vergul bilan ajratilgan barcha ustunlar qavs 
    ichida koʻrsatilgan. Va oxirida, VALUES soʻzidan keyin qoʻshilgan 
    qiymatlar qavs ichida keltirilgan. 
    Aytaylik, bizning ma‘lumotlar bazamizda quyidagi talitsa mavjud: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    CREATE
    TABLE
    Products
    (
    Id SERIAL PRIMARY
    KEY,
    ProductName VARCHAR(30) NOT
    NULL,
    Manufacturer VARCHAR(20) NOT
    NULL,
    ProductCount INTEGER
    DEFAULT
    0,
    Price NUMERIC
    );
    INSERT buyrugʻi yordamida unga bitta qator qoʻshamiz: 
    1. 
    INSERT
    INTO
    Products VALUES
    (1, 'Galaxy S9', 
    'Samsungʻ, 4, 63000)
    pgAdmin-da muvaffaqiyatli bajarilgandan soʻng, xabar maydonida 
    "INSERT 0 1" xabari paydo boʻlishi kerak: 


    47 
    4.1-rasm. SQL soʻrovlar oynasi 
    Shuni yodda tutish kerakki, VALUES kalit soʻzidan keyin qavs 
    ichidagi ustunlar uchun qiymatlar e'lon qilingan tartibda uzatiladi. 
    Masalan, yuqoridagi CREATE TABLE bayonotida siz birinchi ustun Id 
    ekanligini koʻrishingiz mumkin, shuning uchun bu ustunga 1 raqami 
    beriladi. Ikkinchi ustun mahsulot nomi deb ataladi, shuning uchun ikkinchi 
    qiymat, "Galaxy S9" qatori boʻladi. bu alohida ustunga oʻtdi va hokazo. 
    Ya'ni, qiymatlar ustunlarga quyidagicha uzatiladi: 
    Id: 1 
    Mahsulot nomi: "Galaxy S9" 
    Ishlab chiqaruvchi: "Samsung" 
    Mahsulotlar soni: 4 
    Narxi: 63000 
    Bundan tashqari, qiymatlarni kiritishda siz qiymatlar qoʻshiladigan 
    bevosita ustunlarni belgilashingiz mumkin: 
    1. 
    2. 
    INSERT
    INTO
    Products 
    (ProductName, 
    Price, 
    Manufacturer) 
    VALUES
    ('iPhone X', 71000, 'Apple');
    Bu erda qiymat faqat uchta ustun uchun koʻrsatilgan. Va endi qiymatlar 
    ustunlar tartibida oʻtkaziladi: 
    Mahsulot nomi: iPhone X 
    Ishlab chiqaruvchi: "Apple" 
    Narxi: 71000 


    48 
    Id ustuni uchun qiymat ma‘lumotlar bazasi tomonidan avtomatik 
    ravishda yaratiladi, chunki u Seriya turini ifodalaydi. Ya'ni, oxirgi satrdagi 
    qiymatga bittasi qoʻshiladi. 
    Qolgan ustunlar uchun DEFAULT atributi (masalan, ProductCount 
    ustuni uchun) NULL oʻrnatilgan boʻlsa, standart qiymat qoʻshiladi. 
    Bunday holda, aniqlanmagan ustunlar (Serial tipidagilar bundan mustasno) 
    null boʻlishi yoki DEFAULT atributiga ega boʻlishi kerak. 
    Agar birinchi misoldagi kabi maxsus ustunlar koʻrsatilmagan boʻlsa, 
    jadvaldagi barcha ustunlar uchun qiymatlarni oʻtkazishimiz kerak. 
    Biz bir vaqtning oʻzida bir nechta qatorlarni qoʻshishimiz mumkin: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    INSERT
    INTO
    Products (ProductName, Manufacturer, 
    ProductCount, Price)
    VALUES
    ('iPhone 6', 'Apple', 3, 36000),
    ('Galaxy S8', 'Samsungʻ, 2, 46000),
    ('Galaxy S8 Plus', 'Samsungʻ, 1, 56000)
    Bunday holda, jadvalga uchta qator qoʻshiladi. 
    Qaytariladigan qiymatlar 
    Agar biz ustunlarning faqat bir qismi uchun qiymatlarni qoʻshsak, 
    boshqa ustunlar qanday qiymatlarga ega boʻlishini bilmasligimiz mumkin. 
    Masalan, Id ustuni mahsulot uchun qanday qiymatga ega boʻladi? 
    RETURNING operatori yordamida biz ushbu qiymatni olishimiz mumkin: 
    1. 
    2. 
    3. 
    4. 
    5. 
    INSERT
    INTO
    Products 
    (ProductName, 
    Manufacturer, 
    ProductCount, 
    Price) 
    VALUES('Desire 
    12', 
    'HTC', 
    8, 
    21000) 
    RETURNING id;


    49 
    4.2-rasm. SQL soʻrovlar oynasida yozilishi 
    Ma‘lumotlar bazasidan ma‘lumotlarni olish uchun SELECT 
    buyrugʻidan foydalaning. Soddalashtirilgan shaklda u quyidagi sintaksisga 
    ega: 
    1. 
    SELECT
    список_столбцов FROM
    имя_таблицы
    Masalan, siz avvalroq ―Mahsulotlar‖ jadvalini yaratdingiz va unga 
    dastlabki maʼlumotlarni qoʻshdingiz deylik: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    11. 
    12. 
    13. 
    14. 
    15. 
    16. 
    17. 
    CREATE
    TABLE
    Products
    (
    Id SERIAL PRIMARY
    KEY,
    ProductName VARCHAR(30) NOT
    NULL,
    Manufacturer VARCHAR(20) NOT
    NULL,
    ProductCount INTEGER
    DEFAULT
    0,
    Price NUMERIC
    );
    INSERT
    INTO
    Products (ProductName, Manufacturer, 
    ProductCount, Price)
    VALUES
    ('iPhone X', 'Apple', 3, 36000),
    ('iPhone 8', 'Apple', 2, 41000),
    ('Galaxy S9', 'Samsungʻ, 2, 46000),
    ('Galaxy S8 Plus', 'Samsungʻ, 1, 56000),
    ('Desire 12', 'HTC', 5, 28000);


    50 
    Keling, ushbu jadvaldagi barcha ob'ektlarni olamiz: 
    1. 
    SELECT
    * FROM
    Products;
    Yulduzcha * barcha ustunlarni olishni xohlayotganimizni bildiradi. 
    4.3-rasm. Select soʻrovining ishlatilishi 
    Biroq, yulduzcha * belgisidan foydalanish yaxshi amaliyot 
    hisoblanmaydi, chunki odatda barcha ustunlar kerak emas. Va yaxshiroq 
    yondashuv SELECT soʻzidan keyin barcha kerakli ustunlarni sanab 
    oʻtishdir. Jadvalning mutlaqo barcha ustunlari boʻyicha ma‘lumotlarni 
    olishingiz kerak boʻlgan holatlar bundan mustasno. Bundan tashqari, aniq 
    ustun nomlari noma‘lum boʻlgan holatlarda * belgisidan foydalanish 
    afzalroq boʻlishi mumkin. 
    Agar biz hamma uchun emas, balki ba'zi bir ustunlar uchun 
    ma‘lumotlarni olishimiz kerak boʻlsa, unda barcha ustunlar SELECTdan 
    keyin vergul bilan ajratilgan holda keltirilgan: 
    1. 
    SELECT
    ProductName, Price FROM
    Products;


    51 
    4.4-rasm. Select soʻrovining ishlatilishi 
    Ustun spetsifikatsiyasi uning nomini ifodalashi shart emas. Bu har 
    qanday ifoda boʻlishi mumkin, masalan, arifmetik amalning natijasi. 
    Shunday qilib, keling, quyidagi soʻrovni bajaramiz: 
    1. 
    2. 
    SELECT
    ProductCount, 
    Manufacturer, 
    Price 

    ProductCount
    FROM
    Products;
    Bu yerda tanlov uchta ustun hosil qiladi. Bundan tashqari, uchinchi 
    ustun Narx ustunining qiymatini ProductCount ustunining qiymatiga, ya'ni 
    mahsulotning umumiy qiymatiga koʻpaytiradi. 
    AS operatori yordamida siz chiqish ustunining nomini oʻzgartirishingiz 
    yoki uning taxalluslarini belgilashingiz mumkin: 




    SELECT
    ProductCount AS
    Title, 
    Manufacturer, 
    Price * ProductCount AS
    TotalSum
    FROM
    Products;
    Bunday holda, tanlov natijasi 3 ta ustun uchun ma‘lumotlardir. Birinchi 
    ustun Sarlavha taxallus bilan belgilanadi, lekin aslida u Mahsulot nomi 
    ustunini ifodalaydi. Ikkinchi ustun oʻz nomini saqlab qoladi - Ishlab 
    chiqaruvchi. Uchinchi ustun, TotalSum, ProductCount va Price ustunlari 


    52 
    mahsulotini saqlaydi. 
    4.5-rasm. Select soʻrovining ishlatilishi

    Download 2,08 Mb.
    1   ...   9   10   11   12   13   14   15   16   ...   19




    Download 2,08 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Oʻzbеkistоn rеspublikаsi оliy vа oʻrtа mаxsus tа’lim vаzirligi islom karimov nоmidаgi

    Download 2,08 Mb.
    Pdf ko'rish