Tarkibga o'tish

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).

Kutilgan natija
id | integer | NO
nom | text | NO

2. (dokon, oson) SERIAL ustunli 'teg' jadvali: id SERIAL PK, nom text. Ikki qator qo'shing va id larni ko'rsating.

Kutilgan natija
1 | a
2 | b

3. (dokon, oson) DEFAULT qiymat: 'izoh' jadvali — id PK, matn text, sana date DEFAULT DATE '2025-01-01'. Qator qo'shib sanani ko'rsating.

Kutilgan natija
1 | 2025-01-01

4. (dokon, oson) UNIQUE cheklov: 'promokod' jadvali (id PK, kod text UNIQUE). Cheklovlar turini ko'rsating.

Kutilgan natija
p
u

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.

Kutilgan natija
1

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.

Kutilgan natija
1 | Telefon 1

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.

Kutilgan natija
0

8. (dokon, o'rta) Murakkab (composite) PK: 'tanlangan' jadvali (mijoz_id, mahsulot_id, PRIMARY KEY (mijoz_id, mahsulot_id)). PK ustunlari sonini ko'rsating.

Kutilgan natija
2

9. (dokon, o'rta) GENERATED ALWAYS AS IDENTITY: 'log' jadvali (id identity PK, matn text); ikki qator qo'shing.

Kutilgan natija
1 | x
2 | y

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.

Kutilgan natija
30

11. (dokon, qiyin) CREATE TABLE AS: 'qimmat_mahsulot' — narxi 500000 dan yuqori mahsulotlardan nusxa; soni.

Kutilgan natija
0

12. (dokon, qiyin) LIKE bilan jadval nusxasi: mahsulot strukturasidan 'mahsulot_arxiv' yarating (LIKE mahsulot INCLUDING ALL) va PK borligini tekshiring.

Kutilgan natija
1

13. (dokon, qiyin) Vaqtinchalik jadval: TEMP TABLE 'vaqt' (x int), 3 qator va yig'indi.

Kutilgan natija
6

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.

Kutilgan natija
1

15. (maktab, oson) 'mavzu' jadvali (id PK, nom text NOT NULL, fan_id int REFERENCES fan(id)). Ustun nomlari.

Kutilgan natija
id
nom
fan_id

16. (maktab, oson) 'topshiriq' jadvali: id serial PK, matn text NOT NULL, muddat date; qator qo'shing.

Kutilgan natija
1 | uy ishi

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.

Kutilgan natija
100

18. (maktab, o'rta) UNIQUE (oquvchi_id, fan_id) bilan 'tanlov' jadvali; cheklovlar turlarini ko'rsating.

Kutilgan natija
f | 2
p | 1
u | 1

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.

Kutilgan natija
f

20. (maktab, qiyin) CREATE TABLE AS: 'a_lo_oquvchilar' — o'rtacha balli 4 dan yuqori o'quvchilar id si.

Kutilgan natija
8

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.

Kutilgan natija
1

22. (bank, oson) 'valyuta_kurs' jadvali (valyuta char(3) PK, kurs numeric(10,2) NOT NULL). Ustunlar.

Kutilgan natija
valyuta | character
kurs | numeric

23. (bank, oson) 'karta' jadvali: id PK, hisob_id FK, raqam text UNIQUE NOT NULL. Cheklovlar turlari.

Kutilgan natija
f
p
u

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.

Kutilgan natija
1 | 1000000.00

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.

Kutilgan natija
1

26. (bank, o'rta) Generated ustun: 'oylik_tolov' jadvali (summa numeric, oy int, oylik numeric GENERATED ALWAYS AS (summa/oy) STORED); 1200 va 12.

Kutilgan natija
100.0000000000000000

27. (bank, qiyin) Kompozit FK: 'a1'(x,y PK) va 'b1'(x,y FK). Cheklov turlari b1 uchun.

Kutilgan natija
f
p

28. (bank, qiyin) CREATE TABLE AS bilan oylik hisobot jadvali: 'oylik_hisobot' (oy, kirim, chiqim). 'chiqim'lar summasi.

Kutilgan natija
62237125.00

29. (kutubxona, oson) 'nashriyot' jadvali (id PK, nom text NOT NULL UNIQUE). Cheklov sonlari.

Kutilgan natija
2

30. (kutubxona, oson) 'sharh' jadvali: id serial PK, kitob_id FK, ball int CHECK(ball BETWEEN 1 AND 5). 1 qator qo'shing.

Kutilgan natija
1 | 5

31. (kutubxona, o'rta) 'jarima' jadvali: id PK, ijara_id FK ON DELETE CASCADE, summa numeric DEFAULT 0. Ijarani o'chirib, jarimalar soni.

Kutilgan natija
0

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.

Kutilgan natija
40

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.

Kutilgan natija
2