69 / 100

ADD COLUMN

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.

ALTER TABLE ADD COLUMN buyrug'iga kirish

Loyiha talablari o'zgarganda jadvalga yangi ustunlar qo'shish zarurati tug'iladi. Buning uchun ALTER TABLE ... ADD COLUMN buyrug'idan foydalaniladi.

Asosiy sintaksis:

query.sql
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:

query.sql
ALTER TABLE table_name
ADD COLUMN new_column1 data_type constraint,
ADD COLUMN new_column2 data_type constraint;

Namunaviy jadval yaratish

Misol uchun ta'minotchilar (vendors) jadvalini yaratamiz:

query.sql
CREATE TABLE vendors (
  id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  name VARCHAR(255) NOT NULL
);

Bitta ustun qo'shish

Jadvalga address ustunini qo'shamiz:

query.sql
ALTER TABLE vendors
ADD COLUMN address TEXT;

Bir vaqtda bir nechta ustun qo'shish

email va phone ustunlarini birgalikda qo'shamiz:

query.sql
ALTER TABLE vendors
ADD COLUMN email VARCHAR(255) NOT NULL,
ADD COLUMN phone VARCHAR(25) NOT NULL;

Ma'lumotlari bor jadvalga NOT NULL ustun qo'shish

Aytaylik, jadvalda allaqachon ma'lumotlar bor:

query.sql
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:

query.sql
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:

  1. 1-bosqich: Ustunni dastlab NOT NULL cheklovisiz qo'shasiz:
    query.sql
    ALTER TABLE vendors ADD COLUMN website VARCHAR;
    
  2. 2-bosqich: Mavjud qatorlar uchun qiymatlarni yangilaysiz:
    query.sql
    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';
    
  3. 3-bosqich: Barcha qatorlar to'ldirilgach, ustunga NOT NULL cheklovini o'rnatasiz:
    query.sql
    ALTER TABLE vendors ALTER COLUMN website SET NOT NULL;
    

Ustunni muayyan o'ringa (pozitsiyaga) qo'shish

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:

  1. Jadval nomini o'zgartirib turish (ALTER TABLE vendors RENAME TO vendors_old;).
  2. Yangi jadvalni kerakli ustunlar tartibi bilan qayta yaratish.
  3. Ma'lumotlarni eski jadvaldan yangisiga ko'chirish (INSERT INTO vendors ... SELECT ... FROM vendors_old;).
  4. Eski jadvalni o'chirib tashlash (DROP TABLE vendors_old;).

Xulosa

  • Mavjud jadvalga yangi maydonlar qo'shish uchun ALTER TABLE ... ADD COLUMN buyrug'idan foydalaning.
  • Ma'lumotlari bor jadvalga NOT NULL ustun qo'shishda avval ustunni qo'shib, ma'lumotlarni yangilab, so'ngra cheklov o'rnatiladi yoki DEFAULT qiymat bilan birga yaratiladi.