ALTER, DROP, TRUNCATE
206 daq
Loyiha o‘sgani sari jadvallar ham o‘zgaradi: yangi ustun kerak bo‘ladi, nomlar almashadi, keraksiz jadvallar o‘chiriladi. Bu darsdagi buyruqlarni Erkin rejimda sinab ko‘ring.
ALTER TABLE — jadvalni o‘zgartirish
Ustun qo‘shish:
ALTER TABLE books ADD COLUMN pages int;Ustunni o‘chirish:
ALTER TABLE books DROP COLUMN pages;Ustun nomini o‘zgartirish:
ALTER TABLE books RENAME COLUMN year TO published_year;Jadval nomini o‘zgartirish:
ALTER TABLE books RENAME TO library_books;Ustun turini o‘zgartirish:
ALTER TABLE books ALTER COLUMN title TYPE varchar(300);Cheklov qo‘shish:
ALTER TABLE books ADD CONSTRAINT price_positive CHECK (price >= 0);DROP — o‘chirish
DROP TABLE loans;
DROP DATABASE kutubxona;DROP qaytarib bo‘lmaydi: jadval ham, undagi hamma ma’lumot ham yo‘qoladi. Jadval mavjudligiga ishonch bo‘lmasa: DROP TABLE IF EXISTS loans;.
Agar jadvalga boshqa jadval tashqi kalit bilan bog‘langan bo‘lsa, uni o‘chirib bo‘lmaydi — avval bog‘langan (bola) jadvalni o‘chirish kerak.
PostgreSQL’da DROP TABLE books CASCADE; — bog‘langan tashqi kalitlarni ham olib tashlaydi. Ehtiyot bo‘ling!
TRUNCATE — tez tozalash
TRUNCATE TABLE loans;Jadval qoladi, lekin ichi bo‘shaydi. DELETE FROM loans; bilan natija bir xil, lekin TRUNCATE ancha tez (qatorlarni birma-bir o‘chirmaydi) va avtomatik raqamni ham boshidan boshlaydi.
PostgreSQL’da hisoblagichni qaytadan boshlash uchun: TRUNCATE loans RESTART IDENTITY;
Qaysi biri qachon?
| Buyruq | Nima qoladi | Qaytarib bo‘ladimi |
|---|---|---|
DELETE FROM t WHERE … |
jadval, boshqa qatorlar | tranzaksiya ichida — ha |
TRUNCATE t |
jadval (bo‘sh) | deyarli yo‘q |
DROP TABLE t |
hech narsa | yo‘q |
Esda qoldiring
ALTER TABLE … ADD / DROP / RENAME COLUMN— jadval tuzilishini o‘zgartiradi.DROP— butunlay o‘chiradi,TRUNCATE— ichini tozalaydi.- Bog‘langan jadvallarni bola jadvaldan boshlab o‘chiring.