PostgreSQL ПРОМЯНА НА ТАБЛИЦА: Добавяне и преименуване на колона

⚡ Умно обобщение

PostgreSQL ALTER TABLE променя структурата на съществуваща таблица, което ви позволява да добавяте или премахвате колони, да преименувате колона или цялата таблица, да задавате стойности по подразбиране и да прикачвате ограничения за проверка, без да пресъздавате обекта.

  • 🧱 Синтаксис: Действието ALTER TABLE table-name извършва една структурна промяна на оператор.
  • Добавяне на колона: ADD име на колона тип данни добавя нова колона към таблицата.
  • Преименуване: ПРЕИМЕНУВАНЕ НА КОЛОНА и ПРЕИМЕНУВАНЕ ЗА промяна на името на колона или името на таблица.
  • Стойност по подразбиране: ALTER COLUMN SET DEFAULT предоставя стойност за бъдещи редове INSERT.
  • Проверете ограничението: ADD CHECK валидира нови данни и отхвърля стойности, които не отговарят на правилото.
  • 🤖 Миграции на изкуствен интелект: Асистентите с изкуствен интелект изготвят скриптове за промяна на таблицата и ги преглеждат за безопасно внедряване.

PostgreSQL ALTER TABLE

Какво е ALTER TABLE в PostgreSQL?

- ALTER TABLE Командата се използва за промяна на структурата на PostgreSQL таблица. Това е командата, използвана за промяна на колоните на таблицата или името на самата таблица, без да се премахваping и пресъздаване на обекта.

Синтаксис

Ето синтаксиса за PostgreSQL Команда ALTER TABLE:

ALTER TABLE table-name action;

Параметърът „име на таблица“ е името на таблицата, която трябва да промените. Параметърът „действие“ е действието, което трябва да извършите, като например промяна на името на колона или промяна на типа данни на колона.

Descriptйон

Командата ALTER TABLE променя дефиницията на съществуваща таблица. Той приема следните подформи:

  • ДОБАВЯНЕ НА КОЛОНА: това използва подобен синтаксис като командата CREATE TABLE за добавяне на нова колона към таблица.
  • ПУСКАНЕ НА КОЛОНА: за капкаping колона от таблица. Ограниченията и индексите, наложени на колоните, също ще бъдат премахнати.
  • ЗАДАВАНЕ/ИЗПУСКАНЕ ПО ПОДРАЗБИРАНЕ: използва се за задаване или премахване на стойността по подразбиране за колона. Промяната се прилага само за следващите INSERT изрази.
  • SET/DROP NOT NULL: променя дали колоната ще позволява нули или не.
  • ЗАДАВАНЕ НА СТАТИСТИКИ: за задаване на целта за събиране на статистически данни за всяка колона за операции ANALYZE.
  • НАСТРОЙКА СЪХРАНЕНИЕ: за задаване на режима на съхранение на колона, независимо дали е вградена или в допълнителна таблица.
  • КОМПЛЕКТ БЕЗ ОИДИ: използва се за премахване на старата OID колона от таблицата.
  • ПРЕИМЕНУВАНЕ: за промяна на името на таблицата или името на колона.
  • ДОБАВЕТЕ table_constraint: използва се за добавяне на ново ограничение към таблица. Използва същия синтаксис като СЪЗДАЙТЕ МАСА команда.
  • ОГРАНИЧЕНИЕ НА КАПАНЕТО: използва се за пусканеping ограничение на таблицата.
  • СОБСТВЕНИК: за промяна на собственика на таблица, последователност, индекс или изглед на определен потребител.
  • CLUSTER: за маркиране на таблица, която да се използва за бъдещи клъстерни операции.

Промяна на колона

Колоната може да бъде променена по редица начини. Такива промени се извършват с помощта на командата ALTER TABLE. Нека ги обсъдим по-долу.

Добавяне на нова колона

За да добавите нова колона към a PostgreSQL таблица, командата ALTER TABLE се използва със следния синтаксис:

ALTER TABLE table-name
  ADD new-column-name column-definition;

Името на таблицата е името на таблицата, която ще бъде променена. Името на новата колона е името на новата колона, която ще бъде добавена. Дефиницията на колоната е тип данни на новата колона. Вижте таблицата „Книга“, показана по-долу:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Таблицата има две колони, id и name. Трябва да добавим нова колона към таблицата и да ѝ дадем името author. Просто изпълнете следната команда:

ALTER TABLE Book
  ADD author VARCHAR(50);

След изпълнение на горната команда таблицата Book вече е както следва:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Новата колона беше добавена успешно.

Преименуване на колона на таблица

Можем да използваме командата ALTER TABLE, за да променим името на колона. В този случай командата се използва със следния синтаксис:

ALTER TABLE table-name
  RENAME COLUMN old-name TO new-name;

Името на таблицата е името на таблицата, чиято колона ще бъде преименувана. Старото име е текущото име на колоната, а новото име е новото име на колоната. Разгледайте таблицата Book, показана по-долу:

Книга:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Трябва да променим името на колоната author на book_author. Ето командата:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

След като изпълним командата, можем да видим структурата на таблицата:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Името на колоната бе променено успешно.

Задаване на стойност по подразбиране за колона

Можем да зададем стойност по подразбиране за колона, така че дори когато не укажете стойност за тази колона по време на операциите INSERT, ще се използва стойността по подразбиране. В този случай командата ALTER TABLE може да се използва със следния синтаксис:

ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];

„Име на таблица“ е името на таблицата, чиято колона ще бъде променена. „Име на колона“ е името на колоната, чиято стойност по подразбиране ще бъде зададена, а „стойността“ е стойността по подразбиране за колоната. Разгледайте таблицата „Book“, дадена по-долу:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Трябва да зададем стойност по подразбиране за колоната book_author. Можем да изпълним следната команда:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';

Сега нека вмъкнем ред в таблицата:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners');

Обърнете внимание, че въведохме стойности само за две колони, id и name. За колоната book_author обаче е използвана стойността по подразбиране:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Добавяне на ограничение за проверка

Ограничението за проверка помага при валидирането на записите, които се вмъкват в таблица. Можем да направим това, като комбинираме командата ALTER TABLE с командата ADD CHECK. Синтаксис:

ALTER TABLE table-name ADD CHECK expression;

Името на таблицата е името на таблицата, която ще бъде променена, а изразът е ограничението, което ще бъде наложено на колоната на таблицата. Нека модифицираме колоната book_author на таблицата Book, така че да приема само стойностите Nicholas и Samuel:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));

Сега нека се опитаме да вмъкнем стойност, различна от Nicholas или Samuel, в колоната book_author на таблицата Book:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

Изявлението ще върне следната грешка:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Операцията за вмъкване е неуспешна, защото нарушихме ограничението за проверка.

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

Ето синтаксиса на командата ALTER TABLE за преименуване на таблица:

ALTER TABLE table-name
  RENAME TO new-table-name;

Името на таблицата е текущото име на таблицата, а новото име на таблицата е новото име, което ще бъде присвоено на таблицата. Например, нека променим името на таблицата „Книга“ на „Книги“:

ALTER TABLE Book
  RENAME TO Books;

Използване на pgAdmin

Досега действията бяха изпълнявани от SQL shell. Сега нека видим как същите тези действия могат да се изпълнят визуално, използвайки pgAdmin.

Добавяне на нова колона

Стъпка 1) Влезте във вашия pgAdmin акаунт.

Стъпка 2)

  1. От лентата за навигация вляво щракнете върху Бази данни.
  2. Щракнете върху Демо.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 3) Въведете заявката в редактора на заявки:

ALTER TABLE Book
  ADD author VARCHAR(50);

Стъпка 4) Щракнете върху бутона Изпълнение.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 5) За да проверите дали колоната е добавена, направете следното:

  1. Щракнете върху Бази данни от лявата навигация.
  2. Разширяване на демонстрацията.
  3. Разгънете схеми.
  4. Разширете Public.
  5. Разгъване на таблици.
  6. Разширете книгата.
  7. Разгъване на колони.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Колоната трябва да бъде добавена, както е показано по-долу:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Преименуване на колона на таблица

Стъпка 1) Влезте във вашия pgAdmin акаунт.

Стъпка 2)

  1. От лентата за навигация вляво щракнете върху Бази данни.
  2. Щракнете върху Демо.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 3) Въведете заявката в редактора на заявки:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Стъпка 4) Щракнете върху бутона Изпълнение.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 5) За да проверите дали промяната е била успешна, разгънете колоните на таблицата с книги както преди:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Сега колоните трябва да са както следва:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Колоната бе променена успешно.

Задаване на стойност по подразбиране за колона

Стъпка 1) Влезте във вашия pgAdmin акаунт.

Стъпка 2)

  1. От лентата за навигация вляво щракнете върху Бази данни.
  2. Щракнете върху Демо.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 3) Въведете заявката в редактора на заявки:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';

Стъпка 4) Щракнете върху бутона Изпълнение.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 5) За да тествате, изпълнете следната команда в редактора на заявки:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners')

Стъпка 6) Сега можем да отправим запитване към таблицата, за да проверим дали стойността по подразбиране е била вмъкната в колоната book_author:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Добавяне на ограничение за проверка

Стъпка 1) Влезте във вашия pgAdmin акаунт.

Стъпка 2)

  1. От лентата за навигация вляво щракнете върху Бази данни.
  2. Щракнете върху Демо.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 3) Въведете заявката в редактора на заявки:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))

Стъпка 4) Щракнете върху бутона Изпълнение.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 5) За да тествате това, въведете следната заявка в редактора на заявки и щракнете върху бутона „Изпълни“:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Ще върне следното:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

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

Стъпка 1) Влезте във вашия pgAdmin акаунт.

Стъпка 2)

  1. От лентата за навигация вляво щракнете върху Бази данни.
  2. Щракнете върху Демо.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 3) Въведете заявката в редактора на заявки:

ALTER TABLE Book
  RENAME TO Books;

Стъпка 4) Щракнете върху бутона Изпълнение.

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Стъпка 5) За да проверите дали таблицата е преименувана, разгънете Бази данни > Демо > Схеми > Публични > Таблици:

PostgreSQL Пример за ПРОМЯНА НА ТАБЛИЦА

Таблицата беше преименувана успешно.

Изтеглете базата данни, използвана в този урок

Въпроси и Отговори

Използвайте ALTER TABLE table_name ALTER COLUMN column_name TYPE new_type. Добавете клауза USING, когато стойностите се нуждаят от преобразуване, например ALTER COLUMN price TYPE numeric USING price::numeric. PostgreSQL пренаписва колоната и проверява дали съществуващите данни отговарят на новия тип.

Само ако по подразбиране стойността е нестабилна. Тъй като PostgreSQL 11, ADD COLUMN с константна стойност по подразбиране актуализира каталога мигновено, без да се презаписват редове. Стойност по подразбиране, която извиква функция, все пак налага пълно презаписване на таблицата и по-силно заключване.

Не. PostgreSQL Не може да се променя ограничение на място. Премахнете съществуващото с DROP CONSTRAINT, след което добавете коригираното с ADD CONSTRAINT. Обгърнете и двата оператора в транзакция, така че таблицата никога да не остане без правилото.

Избройте няколко действия, разделени със запетаи: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL прилага всяка промяна с едно преминаване, което е по-бързо и поддържа таблицата консистентна.

Използвайте ALTER TABLE table_name ADD PRIMARY KEY (колона) или ADD CONSTRAINT pk_name PRIMARY KEY (колона). Колоната трябва да съдържа уникални, ненулеви стойности; PostgreSQL автоматично изгражда поддържащ уникален индекс, когато ключът е създаден.

RENAME актуализира само името на таблицата в системния каталог. Запазените редове, индекси и ограничения остават на мястото си и не се влияят. Изгледите или функциите, които препращат към старото име, може все още да се нуждаят от актуализиране след това.

Асистентите с изкуствен интелект изготвят скриптове за ALTER TABLE от описана промяна, подреждат правилно стъпките ADD, RENAME и constraint и добавят клаузи USING за преобразуване на типове. Те също така маркират операции, които пренаписват големи таблици или задържат тежки заключвания.

Да. AI Copilot преглежда миграцията, предупреждава за заключване или пренаписване на цялата таблица, предлага пакетно или едновременни изграждане на индекси и препоръчва обгръщане.ping промени в транзакцията, което прави актуализациите на схемата по-безопасни за внедряване.

Обобщете тази публикация с: