020. CREATE TABLE va cheklovlar
Bu mavzuda PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE, IDENTITY bo'yicha 33 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.
Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.
1. (dokon, oson) 'brend' jadvalini yarating: id (PRIMARY KEY), nom (matn, NOT NULL).
2. (dokon, oson) SERIAL ustunli 'teg' jadvali: id SERIAL PK, nom text. Ikki qator qo'shing va id larni ko'rsating.
3. (dokon, oson) DEFAULT qiymat: 'izoh' jadvali — id PK, matn text, sana date DEFAULT DATE '2025-01-01'. Qator qo'shib sanani ko'rsating.
4. (dokon, oson) UNIQUE cheklov: 'promokod' jadvali (id PK, kod text UNIQUE). Cheklovlar turini ko'rsating.
5. (dokon, o'rta) CHECK: 'chegirma' jadvali — id PK, foiz int CHECK (foiz BETWEEN 0 AND 100). Cheklov turi 'c' bor-yo'qligini ko'rsating.
6. (dokon, o'rta) FOREIGN KEY: 'sharh' jadvali — id PK, mahsulot_id int REFERENCES mahsulot(id), matn text. Qator qo'shib, mahsulot nomi bilan JOIN qiling.
7. (dokon, o'rta) ON DELETE CASCADE: 'savat' (id PK) va 'savat_element' (id PK, savat_id FK ON DELETE CASCADE) yarating; savatni o'chirib, elementlar sonini ko'rsating.
8. (dokon, o'rta) Murakkab (composite) PK: 'tanlangan' jadvali (mijoz_id, mahsulot_id, PRIMARY KEY (mijoz_id, mahsulot_id)). PK ustunlari sonini ko'rsating.
9. (dokon, o'rta) GENERATED ALWAYS AS IDENTITY: 'log' jadvali (id identity PK, matn text); ikki qator qo'shing.
10. (dokon, o'rta) Generated (hisoblangan) ustun: 'qator' jadvali — narx numeric, miqdor int, jami numeric GENERATED ALWAYS AS (narx*miqdor) STORED. 10 va 3 uchun jami.
11. (dokon, qiyin) CREATE TABLE AS: 'qimmat_mahsulot' — narxi 500000 dan yuqori mahsulotlardan nusxa; soni.
12. (dokon, qiyin) LIKE bilan jadval nusxasi: mahsulot strukturasidan 'mahsulot_arxiv' yarating (LIKE mahsulot INCLUDING ALL) va PK borligini tekshiring.
13. (dokon, qiyin) Vaqtinchalik jadval: TEMP TABLE 'vaqt' (x int), 3 qator va yig'indi.
14. (dokon, qiyin) DEFERRABLE FK: 'a' (id PK) va 'b' (id PK, a_id FK DEFERRABLE INITIALLY DEFERRED); b ga a dan oldin qator qo'shib, keyin a ni qo'shing; b dagi qator soni.
15. (maktab, oson) 'mavzu' jadvali (id PK, nom text NOT NULL, fan_id int REFERENCES fan(id)). Ustun nomlari.
16. (maktab, oson) 'topshiriq' jadvali: id serial PK, matn text NOT NULL, muddat date; qator qo'shing.
17. (maktab, o'rta) 'imtihon' jadvali: id PK, fan_id FK, sana date NOT NULL, max_ball int CHECK (max_ball>0) DEFAULT 100. Qator qo'shib max_ball ni chiqaring.
18. (maktab, o'rta) UNIQUE (oquvchi_id, fan_id) bilan 'tanlov' jadvali; cheklovlar turlarini ko'rsating.
19. (maktab, o'rta) NOT NULL va DEFAULT: 'xabar' (id PK, matn text NOT NULL, oqilgan boolean NOT NULL DEFAULT false). Qator qo'shib oqilgan ni ko'rsating.
20. (maktab, qiyin) CREATE TABLE AS: 'a_lo_oquvchilar' — o'rtacha balli 4 dan yuqori o'quvchilar id si.
21. (maktab, qiyin) EXCLUDE cheklovi (btree_gist kerak emas, oddiy UNIQUE): 'dars_jadvali' (sinf_id, hafta_kuni, soat, UNIQUE(sinf_id,hafta_kuni,soat)). Cheklov turi 'u' mavjudligi.
22. (bank, oson) 'valyuta_kurs' jadvali (valyuta char(3) PK, kurs numeric(10,2) NOT NULL). Ustunlar.
23. (bank, oson) 'karta' jadvali: id PK, hisob_id FK, raqam text UNIQUE NOT NULL. Cheklovlar turlari.
24. (bank, o'rta) 'xizmat' jadvali: id identity PK, mijoz_id FK, summa numeric(12,2) CHECK(summa>0), boshlanish date NOT NULL. 1 qator qo'shing.
25. (bank, o'rta) Hisob jadvalida balans manfiy bo'lmasligi uchun (ALTER emas) yangi 'hisob2' jadvalini CHECK (balans>=0) bilan yarating va cheklov sonini ko'rsating.
26. (bank, o'rta) Generated ustun: 'oylik_tolov' jadvali (summa numeric, oy int, oylik numeric GENERATED ALWAYS AS (summa/oy) STORED); 1200 va 12.
27. (bank, qiyin) Kompozit FK: 'a1'(x,y PK) va 'b1'(x,y FK). Cheklov turlari b1 uchun.
28. (bank, qiyin) CREATE TABLE AS bilan oylik hisobot jadvali: 'oylik_hisobot' (oy, kirim, chiqim). 'chiqim'lar summasi.
29. (kutubxona, oson) 'nashriyot' jadvali (id PK, nom text NOT NULL UNIQUE). Cheklov sonlari.
30. (kutubxona, oson) 'sharh' jadvali: id serial PK, kitob_id FK, ball int CHECK(ball BETWEEN 1 AND 5). 1 qator qo'shing.
31. (kutubxona, o'rta) 'jarima' jadvali: id PK, ijara_id FK ON DELETE CASCADE, summa numeric DEFAULT 0. Ijarani o'chirib, jarimalar soni.
32. (kutubxona, o'rta) Kitob–janr ko'p-ko'pga: 'kitob_janr' (kitob_id, janr_id, PK (kitob_id, janr_id)). 'Roman' kitoblardan to'ldirib qator sonini ko'rsating.
33. (kutubxona, qiyin) Partial unique indeks: bir a'zo bir vaqtda bir kitobni faqat bitta qaytarilmagan holda olishi mumkin: UNIQUE INDEX ON ijara(kitob_id) WHERE qaytarilgan IS NULL emas: yangi 'ijara2' jadvalida. Indekslar soni (PK bilan) 2 ekanini ko'rsating.