Jadvalga yangi ustun qo'shish
Kirish: Ushbu qo'llanmada siz PostgreSQL ALTER TABLE ... ADD COLUMN buyrug'i yordamida mavjud jadvalga yangi ustunlar qo'shishni o'rganasiz.
Loyiha talablari o'zgarganda jadvalga yangi ustunlar qo'shish zarurati tug'iladi. Buning uchun ALTER TABLE ... ADD COLUMN buyrug'idan foydalaniladi.
Asosiy sintaksis:
ALTER TABLE table_name
ADD COLUMN new_column data_type constraint;
PostgreSQL yangi qo'shilgan ustunni doimo jadvalning eng oxiriga joylashtiradi.
Bir vaqtning o'zida bir nechta ustun qo'shish uchun:
ALTER TABLE table_name
ADD COLUMN new_column1 data_type constraint,
ADD COLUMN new_column2 data_type constraint;
Misol uchun ta'minotchilar (vendors) jadvalini yaratamiz:
CREATE TABLE vendors (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
Jadvalga address ustunini qo'shamiz:
ALTER TABLE vendors
ADD COLUMN address TEXT;
email va phone ustunlarini birgalikda qo'shamiz:
ALTER TABLE vendors
ADD COLUMN email VARCHAR(255) NOT NULL,
ADD COLUMN phone VARCHAR(25) NOT NULL;
Aytaylik, jadvalda allaqachon ma'lumotlar bor:
INSERT INTO
vendors (name, address, email, phone)
VALUES
('Samsung', 'South Korea', 'info@samsung.com', '+82-2-2255-0114'),
('Apple', 'Cupertino, USA', 'info@apple.com', '+1-408-996-1010'),
('Google', 'Mountain View, USA', 'info@google.com', '+1-650-253-0000');
Endi unga to'g'ridan-to'g'ri NOT NULL cheklovi bilan yangi website ustunini qo'shmoqchi bo'lsak:
ALTER TABLE vendors
ADD COLUMN website VARCHAR NOT NULL;
PostgreSQL xatolik beradi, chunki mavjud qatorlarda yangi ustun uchun qiymat yo'q (u sukut bo'yicha NULL bo'lib qoladi).
Buni to'g'ri hal qilishning 3 bosqichi:
NOT NULL cheklovisiz qo'shasiz:
ALTER TABLE vendors ADD COLUMN website VARCHAR;
UPDATE vendors SET website = 'https://www.samsung.com' WHERE name = 'Samsung';
UPDATE vendors SET website = 'https://www.apple.com' WHERE name = 'Apple';
UPDATE vendors SET website = 'https://www.google.com' WHERE name = 'Google';
NOT NULL cheklovini o'rnatasiz:
ALTER TABLE vendors ALTER COLUMN website SET NOT NULL;
PostgreSQL boshqa ba'zi bazalar kabi ustunni ixtiyoriy o'rtaga joylashtirishni to'g'ridan-to'g'ri qo'llab-quvvatlamaydi (yangi ustunlar doimo oxiriga qo'shiladi). Agar ustunlar tartibi muhim bo'lsa, quyidagi usul qo'llaniladi:
ALTER TABLE vendors RENAME TO vendors_old;).INSERT INTO vendors ... SELECT ... FROM vendors_old;).DROP TABLE vendors_old;).ALTER TABLE ... ADD COLUMN buyrug'idan foydalaning.NOT NULL ustun qo'shishda avval ustunni qo'shib, ma'lumotlarni yangilab, so'ngra cheklov o'rnatiladi yoki DEFAULT qiymat bilan birga yaratiladi.