6.1 Ma'lumotlar bazasi strukturasini o'zgartirish
Va nihoyat, ma'lumotlar bazalari bilan ishlashning eng qiziqarli qismi — ma'lumotlar bazasini o'zgartirish. Agar sen bu juda oddiy narsa deb o'ylasang, mana senga bir hazil:
USTA, qo'llarini tozalab, mashinani mijozga topshirayotganda suhbatda:
- Siz nima ish qilasiz?
- Kardioxirurgman, yurak jarrohlik amaliyotlarini o'tkazaman.
- Yaxshi to'lashadimi?
- 20,000$ operatsiyaga.
- Voy, qoyil... Biz ham asosan bir xil ish qilamiz, motorlarni yig'amiz, menga atigi 300$ to'laydilar...
- Xuddi men kabi ishlab topishni xohlaysanmi?
- Xohlayman...
Xirurg mashinada motorni ishga tushirib usta bilan gaplashadi:
- Yig'ishtir!
Ma'lumotlar bazalari bilan ham xuddi shunday holat. Ma'lumotning bir qismini alohida jadvalga chiqarishni xohlayapsanmi? Yahshi, kerak bo'ladi:
- yangi jadval yaratish
- ma'lumotlarni shu yangi jadvalga ko'chirish
- eski jadvaldan ustunlarni o'chirish
- eski jadvalga murojaat qilgan barcha SQL-so'rovlarini o'zgartirish
- yangi jadvalga murojaat qiladigan SQL-so'rovlarni qo'shish
- javoblar bilan ishlaydigan Java-kodni o'zgartirish
- zaxira va ma'lumotlarni tiklash ssenariylarini o'zgartirish, chunki endi jadval strukturalari mos emas
- agar rivojlantiruvchilar uchun sinov ma'lumotlaringiz bo'lsa, ularga ham o'zgartirish kerak
Garchi aslida ko'pincha bundan yomonroq bo'ladi:
Yangi BD struktura:
- dasturchining kompyuterida jadval strukturasini o'zgartirasiz
- keyin ishonch hosil qilasizki, bu tuzilish rostdan ham yaxshiroq
- yangi BD tuzilishini tasdiqlaysiz
Migratsiya skriptlari:
- ma'lumotlar jadvalini va boshqalarni haqiqiy ma'lumotlar bazasida o'zgartiradigan skriptlar yozasiz
- ushbu skriptlarni eski bazaviy tuzilishga ega mashinada ishga tushirasiz va u qanday o'zgarayotganini ko'rasiz
- yangi baza barcha muhim joylarini tekshirasiz
Prod versiyasida yangilash
- production-bazani to'xtatasiz
- to'liq zaxira olasiz
- skriptlarni ishga tushirasiz
- odatiy holatda, proddagi ma'lumotlar ko'p bo'lgani uchun skriptlar soatlab ishlashi mumkin
Prodni ishga tushirib, hamma narsani orqaga qaytarishingizga umid qilasiz.
6.2 ALTER TABLE operatori
Boshqa tomondan, jadval strukturasini o'zgartiradigan skript juda oddiy. U jadval yaratish skriptiga o'xshaydi. Jadvalni o'zgartirish so'rovi umumiy ko'rinishi:
ALTER TABLE jadval
komanda 1,
komanda 2,
komanda N
Buyruqlar juda xilma-xil bo'lishi mumkin, lekin uchta asosiy guruhni ajratish mumkin:
ADD— jadvalga biror narsa qo'shadiMODIFY— jadvlda biror narsani o'zgartiradiDROP— jadvldan biror narsani o'chiradi
Va men biror narsa deyayotganimda, ma'lumotlar emas, balki jadval tuzilmasi haqida gapiraman.
Masalan, jadvga yangi ustun qo'shishni qaror qildingiz, keyin bunday so'rovni bajarish kerak:
ALTER TABLE jadval
ADD COLUMN nomi tur
Keling, employee jadvalimizga email ustuni qo'shadigan so'rov yozamiz:
ALTER TABLE employee
ADD COLUMN email VARCHAR(10)
Endi email qatorining uzunligini 10 dan 100 gacha o'zgartiramiz: buning uchun yangi skript kerak bo'ladi:
ALTER TABLE employee
MODIFY COLUMN email VARCHAR(100)
Agar siz ustun atributlarini o'zgartirishni xohlasangiz, lekin uning turini emas, sizga komanda ALTER COLUMN kerak. Keling email qiymatini default qilib qo'yamiz:
ALTER TABLE employee
ALTER COLUMN email VARCHAR(100) DEFAULT 'test@test.com'
Va nihoyat, ustunni o'chirib tashlashingiz mumkin, agar u sizga kerak bo'lmasa:
ALTER TABLE employee
DROP COLUMN email
6.3 Birlamchi kalit qo'shish va olib tashlash
Va yana bir nechta foydali misollar.
Aytaylik, biz id ustunini birlamchi kalit deb e'lon qilishni unutdik. Doimo uni alohida ALTER TABLE orqali qilish mumkin:
ALTER TABLE employee
ADD PRIMARY KEY (id);
Uni o'chirish yanada osonroq:
ALTER TABLE employee
DELETE PRIMARY KEY;
GO TO FULL VERSION