021. ALTER, DROP va migratsiya
Bu mavzuda jadval tuzilmasini o'zgartirish bo'yicha 20 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) mijoz jadvaliga 'telefon' (text) ustunini qo'shing.
2. (dokon, oson) mijoz.shahar ustuni nomini 'viloyat' ga o'zgartiring.
3. (dokon, oson) mahsulot.qoldiq ustuniga DEFAULT 0 o'rnating va qator qo'shib tekshiring.
4. (dokon, oson) Yangi jadvalni yarating va DROP TABLE bilan o'chiring; 'vaqtincha' jadval borligini tekshiring.
5. (dokon, o'rta) mijoz.email uchun UNIQUE cheklov qo'shing; (NULL lar bir necha bo'lishi mumkin). Cheklov borligini tekshiring.
6. (dokon, o'rta) mahsulot.narx ga CHECK (narx>0) qo'shing va cheklov nomini ko'rsating.
7. (dokon, o'rta) Ustun turini o'zgartiring: mahsulot.qoldiq int -> bigint. Turni tekshiring.
8. (dokon, o'rta) Migratsiya: mijoz ga 'faol' boolean DEFAULT true NOT NULL qo'shing, 'Toshkent' bo'lmaganlarni false qiling; faol=false soni.
9. (dokon, o'rta) DROP COLUMN: mijoz.tugilgan_yil ustunini o'chiring; ustunlar soni.
10. (dokon, qiyin) Migratsiya: mahsulot.nom ustuniga NOT NULL ... allaqachon bor; o'rniga mijoz.email ga NOT NULL qo'yish uchun avval NULL larni to'ldiring, so'ng SET NOT NULL; NULL lar soni.
11. (dokon, qiyin) DROP TABLE CASCADE: kategoriya jadvalini CASCADE bilan o'chiring; mahsulot jadvalining FK cheklovlari soni.
12. (maktab, oson) oquvchi jadvaliga 'email' ustuni qo'shing.
13. (maktab, oson) fan jadvalini 'predmet' ga qayta nomlang.
14. (maktab, o'rta) baho.ball ga CHECK (ball<=5) cheklovi mavjud; uni DROP CONSTRAINT bilan olib tashlang (nomi baho_ball_check). Cheklovlar soni.
15. (maktab, o'rta) oqituvchi.maosh ga DEFAULT 3000000 va yangi o'qituvchi qo'shing.
16. (maktab, qiyin) Migratsiya: oquvchi.ism ni 'ism' va 'familiya' ga ajrating (yangi ustun familiya), ism faqat birinchi so'z; birinchi 3 qator.
17. (bank, oson) hisob jadvaliga 'holat' (text DEFAULT 'faol') ustuni qo'shing.
18. (bank, o'rta) qarz jadvaliga FK qo'shish: allaqachon bor; o'rniga yangi 'garov' jadvali va ALTER bilan FK qo'shing.
19. (bank, qiyin) Migratsiya: hisob.balans ni numeric(14,2) dan numeric(16,2) ga kengaytiring va turini tekshiring.
20. (kutubxona, o'rta) kitob jadvaliga 'isbn' text UNIQUE ustuni qo'shing; ustun va cheklov.