JavaRush /Курси /SQL SELF /Зміна структури таблиць за допомогою ALTER TABLE

Зміна структури таблиць за допомогою ALTER TABLE

SQL SELF
Рівень 17 , Лекція 4
Відкрита

Тепер час поговорити про те, як змінювати вже існуючі таблиці. У житті проєкту рідко що залишається незмінним — вимоги можуть прилетіти раптово, як бомбардилокрокодило. Наприклад, продакт-менеджер раптом вирішує, що кожному користувачу потрібен унікальний ідентифікатор улюбленого кольору фону профілю. Або ти розумієш, що VARCHAR(50) для імені — це несолідно, бо в базі вже сидить користувач з ім’ям "Бомбардилокрокодило-Джуніор-Третій".

Що ж, у PostgreSQL для таких задач є інструмент — команда ALTER TABLE.

ALTER TABLE — це команда, яка дозволяє змінювати структуру існуючих таблиць. З її допомогою можна:

  • Додати нові стовпці;
  • Видалити непотрібні стовпці;
  • Змінити тип даних стовпця;
  • Перейменувати таблицю або її стовпці;
  • Додати або видалити обмеження, такі як NOT NULL, UNIQUE, і ще багато чого.

Скажімо так, це як якщо ти вже побудував дім (таблицю), але тепер хочеш додати до нього нову кімнату (стовпець) або прибрати зайву кладовку (видалити стовпець).

Синтаксис ALTER TABLE

Загальна структура команди досить інтуїтивно зрозуміла:

ALTER TABLE таблиця
    дія_зміни;

Де:

  • таблиця — ім’я таблиці, яку ти хочеш змінити;
  • дія_зміни — конкретна дія, яку ти хочеш виконати (наприклад, додати стовпець, видалити його або змінити тип даних).

Приклади використання ALTER TABLE

Додавання нового стовпця

Якщо ти хочеш додати в таблицю новий стовпець, використовуй команду ADD COLUMN. Ось приклад:

ALTER TABLE students
ADD COLUMN email VARCHAR(100);

Ця команда додасть новий стовпець email у таблицю students, де буде зберігатися адреса електронної пошти студента. Тип даних стовпця — рядок довжиною до 100 символів.

Припустимо, ти створив таблицю студентів, але забув додати інформацію про дату їх зарахування. Ось як це виправити:

ALTER TABLE students
ADD COLUMN enrollment_date DATE;

Тепер у тебе з’явився стовпець enrollment_date, і ти можеш зберігати дату зарахування.

Видалення стовпця

Якщо ти вирішив, що якийсь стовпець більше не потрібен, використовуй команду DROP COLUMN. Наприклад:

ALTER TABLE students
DROP COLUMN email;

Ця команда видаляє стовпець email з таблиці students. Майте на увазі, що дані з цього стовпця також будуть видалені без можливості відновлення.

Важливий момент:

Якщо ти спробуєш видалити стовпець, який використовується в інших таблицях (наприклад, як зовнішній ключ), PostgreSQL може видати помилку. У таких випадках спочатку треба видалити залежності.

Зміна типу даних стовпця

Буває, що спочатку обраний тип даних стовпця не підходить. Наприклад, ти вирішив зберігати вік студентів як SMALLINT, а потім зрозумів, що цього замало, і хочеш використовувати BIGINT. Ось як це зробити:

ALTER TABLE students
ALTER COLUMN age TYPE BIGINT;

Важливий момент: якщо дані вже записані у стовпець, PostgreSQL перевіряє, чи можна їх перетворити до нового типу. Якщо не можна, ти отримаєш помилку.

Припустимо, ти створив стовпець description як VARCHAR(100), але потім зрозумів, що опис курсів може бути значно довшим. Зміни тип даних на TEXT:

ALTER TABLE courses
ALTER COLUMN description TYPE TEXT;

Тепер ти можеш зберігати повноцінні описи курсів без обмежень на довжину.

Перейменування стовпця

Якщо треба змінити ім’я стовпця, використовуй команду RENAME COLUMN:

ALTER TABLE students
RENAME COLUMN name TO full_name;

Тепер стовпець name буде називатися full_name.

Перейменування таблиці

Ти можеш також змінити ім’я самої таблиці. Для цього використовується команда RENAME TO:

ALTER TABLE students
RENAME TO university_students;

Тепер таблиця students буде називатися university_students.

Встановлення/видалення обмеження NOT NULL

Припустимо, ти створив стовпець, але забув зробити його обов’язковим (NOT NULL). Не проблема! Можеш додати це обмеження пізніше:

ALTER TABLE students
ALTER COLUMN name SET NOT NULL;

Якщо хочеш зняти обмеження NOT NULL, використовуй команду DROP NOT NULL:

ALTER TABLE students
ALTER COLUMN name DROP NOT NULL;

Встановлення значення за замовчуванням

Якщо стовпець вже існує, але ти хочеш задати для нього значення за замовчуванням, використовуй SET DEFAULT:

ALTER TABLE enrollments
ALTER COLUMN enrollment_date SET DEFAULT CURRENT_DATE;

Щоб прибрати значення за замовчуванням, виконай:

ALTER TABLE enrollments
ALTER COLUMN enrollment_date DROP DEFAULT;

Детальніше розберемо кожну команду у наступних трьох лекціях. Так що готуйся :)

Типові помилки при використанні ALTER TABLE

Під час роботи з ALTER TABLE можуть виникати помилки. Ось найпоширеніші:

Спроба змінити тип даних, який несумісний з поточними даними. Наприклад, якщо у стовпці age вже є дані, а ти намагаєшся його перетворити у рядок VARCHAR, це викличе помилку. Рішення: спочатку видали або перетвори дані.

Спроба видалити стовпець, який використовується як зовнішній ключ або індекс. PostgreSQL не дозволить тобі це зробити, щоб зберегти цілісність даних. Перед видаленням залежних стовпців треба видалити зв’язки.

Помилки синтаксису. Команда ALTER TABLE досить гнучка, але вимагає точного дотримання синтаксису. Наприклад, команда ADD COLUMN повинна містити тип даних.

Реальні сценарії застосування

У реальному житті команда ALTER TABLE використовується постійно. Ти можеш зустріти її при:

  • Додаванні нових даних у вже існуючу таблицю (наприклад, нових стовпців);
  • Оптимізації бази даних (наприклад, зміні типів даних для зменшення обсягу пам’яті);
  • Виправленні помилок проєктування (наприклад, якщо спочатку забули про обмеження або неправильно вибрали тип даних).

Тепер ти розумієш, наскільки потужною є команда ALTER TABLE. Це крутий інструмент, який допомагає справлятися зі змінами у проєкті. Головне — будь уважним і не поспішай, щоб випадково не "зламати дім" (твою таблицю), намагаючись прибудувати нову кімнату.

1
Опитування
Основи створення таблиць, рівень 17, лекція 4
Недоступний
Основи створення таблиць
Основи створення таблиць
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ