PostgreSQL ИЗМЕНИТЬ ТАБЛИЦУ: Добавить и переименовать столбец

⚡ Умное резюме

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

  • 🧱 Синтаксис: Операция ALTER TABLE table-name вносит одно структурное изменение за одно операторное действие.
  • Добавить столбец: Команда ADD column-name data-type добавляет новый столбец в таблицу.
  • 🇧🇷 Переименовать: RENAME COLUMN и RENAME позволяют изменить имя столбца или имя таблицы.
  • ⚙️ Значение по умолчанию: Команда ALTER COLUMN SET DEFAULT задает значение для последующих операций INSERT.
  • 🛡️ Проверка ограничения: Функция ADD CHECK проверяет новые данные и отклоняет значения, не соответствующие правилу.
  • 🤖 Миграция ИИ: Искусственный интеллект создает скрипты ALTER TABLE и проверяет их на безопасность при развертывании.

PostgreSQL ALTER TABLE

Что такое ALTER TABLE в PostgreSQL?

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

Синтаксис

Вот синтаксис для PostgreSQL Команда ИЗМЕНИТЬ ТАБЛИЦУ:

ALTER TABLE table-name action;

Параметр table-name — это имя таблицы, которую необходимо изменить. Параметр action — это действие, которое необходимо выполнить, например, изменить имя столбца или изменить тип данных столбца.

Описание

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

  • ДОБАВИТЬ КОЛОНКУЭта команда использует синтаксис, аналогичный команде CREATE TABLE, для добавления нового столбца в таблицу.
  • УДАЛИТЬ КОЛОНКУ: для каплиping Столбец таблицы. Ограничения и индексы, наложенные на столбцы, также будут удалены.
  • УСТАНОВИТЬ/УДАЛИТЬ ПО УМОЛЧАНИЮИспользуется для установки или удаления значения по умолчанию для столбца. Изменение применяется только к последующим действиям. ВСТАВИТЬ операторы.
  • УСТАНОВИТЬ/УДАЛИТЬ НЕ НУЛЬ: изменяет параметр, разрешает ли столбец значения NULL или нет.
  • СТАТИСТИКА МНОЖЕСТВ: для установки целевого показателя сбора статистики для каждого столбца в операциях ANALYZE.
  • ХРАНЕНИЕ КОМПЛЕКТА: для установки режима хранения столбца: встроенный или в дополнительной таблице.
  • КОМПЛЕКТ БЕЗ ОИДОВИспользуется для удаления старого столбца OID из таблицы.
  • ПЕРЕИМЕНОВАТЬ: для изменения имени таблицы или имени столбца.
  • ДОБАВИТЬ table_constraintИспользуется для добавления нового ограничения к таблице. Синтаксис тот же, что и у . СОЗДАТЬ ТАБЛИЦУ команда.
  • ОГРАНИЧЕНИЕ ОТКАЗАиспользуется для каплиping ограничение таблицы.
  • ВЛАДЕЛЕЦ: для изменения владельца таблицы, последовательности, индекса или представления на определенного пользователя.
  • Кластер: для пометки таблицы, которая будет использоваться для будущих операций кластера.

Изменение столбца

Столбец можно изменить несколькими способами. Такие изменения выполняются с помощью команды ALTER TABLE. Рассмотрим их подробнее ниже.

Добавление нового столбца

Чтобы добавить новый столбец в PostgreSQL table, команда ALTER TABLE используется со следующим синтаксисом:

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

Table-name — это имя таблицы, которую нужно изменить. New-column-name — это имя нового столбца, который нужно добавить. Column-definition — это... тип данных новой колонки. См. таблицу «Книга», представленную ниже:

PostgreSQL Пример команды ALTER TABLE

В таблице есть два столбца: id и name. Нам нужно добавить в таблицу новый столбец и назвать его author. Просто выполните следующую команду:

ALTER TABLE Book
  ADD author VARCHAR(50);

После выполнения указанной выше команды таблица Book теперь выглядит следующим образом:

PostgreSQL Пример команды ALTER TABLE

Новый столбец был успешно добавлен.

Переименование столбца таблицы

Мы можем использовать команду ALTER TABLE, чтобы изменить имя столбца. В этом случае команда используется со следующим синтаксисом:

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

table-name — это имя таблицы, столбец которой нужно переименовать. old-name — это текущее имя столбца, а new-name — это новое имя столбца. Рассмотрим таблицу Book, показанную ниже:

Книга:

PostgreSQL Пример команды ALTER TABLE

Нам нужно изменить название столбца author на book_author. Вот команда:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

После запуска команды мы можем просмотреть структуру таблицы:

PostgreSQL Пример команды ALTER TABLE

Имя столбца было успешно изменено.

Установка значения по умолчанию для столбца

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

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

Table-name — это имя таблицы, столбец которой необходимо изменить. Column-name — это имя столбца, для которого необходимо установить значение по умолчанию, а value — это значение по умолчанию для этого столбца. Рассмотрим таблицу Book, приведенную ниже:

PostgreSQL Пример команды ALTER TABLE

Нам нужно установить значение по умолчанию для столбца 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

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

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

ALTER TABLE table-name ADD CHECK expression;

table-name — это имя таблицы, которую нужно изменить, а expression — это ограничение, которое нужно наложить на столбец таблицы. Давайте изменим столбец book_author таблицы Book так, чтобы он принимал только значения Nicholas и Samuel:

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

Теперь давайте попробуем вставить значение, отличное от Николаса или Сэмюэля, в столбец book_author таблицы Book:

INSERT INTO Book
VALUES(7, 'лучших PostgreSQL Book', 'Gregory Bush');

Оператор вернет следующую ошибку:

PostgreSQL Пример команды ALTER TABLE

Операция вставки не удалась, поскольку мы нарушили проверочное ограничение.

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

Вот синтаксис команды ALTER TABLE для переименования таблицы:

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

table-name — это текущее имя таблицы, а new-table-name — это новое имя, которое будет присвоено таблице. Например, изменим имя таблицы Book на Books:

ALTER TABLE Book
  RENAME TO Books;

Использование pgAdmin

До сих пор действия выполнялись из SQL-оболочки. Теперь давайте посмотрим, как эти же действия можно выполнить визуально с помощью pgAdmin.

Добавление нового столбца

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Нажмите Демо.

PostgreSQL Пример команды ALTER TABLE

Шаг 3) Введите запрос в редакторе запросов:

ALTER TABLE Book
  ADD author VARCHAR(50);

Шаг 4) Нажмите кнопку «Выполнить».

PostgreSQL Пример команды ALTER TABLE

Шаг 5) Чтобы проверить, был ли добавлен столбец, выполните следующие действия:

  1. Нажмите «Базы данных» на панели навигации слева.
  2. Развернуть Демо.
  3. Разверните схемы.
  4. Развернуть Публикация.
  5. Разверните таблицы.
  6. Развернуть книгу.
  7. Развернуть столбцы.

PostgreSQL Пример команды ALTER TABLE

Столбец должен был быть добавлен, как показано ниже:

PostgreSQL Пример команды ALTER TABLE

Переименование столбца таблицы

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Нажмите Демо.

PostgreSQL Пример команды ALTER TABLE

Шаг 3) Введите запрос в редакторе запросов:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Шаг 4) Нажмите кнопку «Выполнить».

PostgreSQL Пример команды ALTER TABLE

Шаг 5) Чтобы проверить, успешно ли были внесены изменения, разверните столбцы таблицы книг, как и раньше:

PostgreSQL Пример команды ALTER TABLE

Столбцы теперь должны быть такими:

PostgreSQL Пример команды ALTER TABLE

Столбец успешно изменен.

Установка значения по умолчанию для столбца

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Нажмите Демо.

PostgreSQL Пример команды ALTER TABLE

Шаг 3) Введите запрос в редакторе запросов:

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

Шаг 4) Нажмите кнопку «Выполнить».

PostgreSQL Пример команды ALTER TABLE

Шаг 5) Для проверки выполните следующую команду в редакторе запросов:

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

Шаг 6) Теперь мы можем запросить таблицу, чтобы проверить, было ли в столбце book_author вставлено значение по умолчанию:

PostgreSQL Пример команды ALTER TABLE

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

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Нажмите Демо.

PostgreSQL Пример команды ALTER TABLE

Шаг 3) Введите запрос в редакторе запросов:

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

Шаг 4) Нажмите кнопку «Выполнить».

PostgreSQL Пример команды ALTER TABLE

Шаг 5) Для проверки введите следующий запрос в редакторе запросов и нажмите кнопку «Выполнить»:

INSERT INTO Book
VALUES(7, 'лучших PostgreSQL Book', 'Gregory Bush');

PostgreSQL Пример команды ALTER TABLE

Он вернет следующее:

PostgreSQL Пример команды ALTER TABLE

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

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите «Базы данных».
  2. Нажмите Демо.

PostgreSQL Пример команды ALTER TABLE

Шаг 3) Введите запрос в редакторе запросов:

ALTER TABLE Book
  RENAME TO Books;

Шаг 4) Нажмите кнопку «Выполнить».

PostgreSQL Пример команды ALTER TABLE

Шаг 5) Чтобы проверить, была ли таблица переименована, разверните раздел Базы данных > Демонстрация > Схемы > Общедоступные > Таблицы:

PostgreSQL Пример команды ALTER TABLE

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

Загрузите базу данных, используемую в этом руководстве.

Часто задаваемые вопросы (FAQ)

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

Только если значение по умолчанию является нестабильным. Поскольку PostgreSQL 11. Добавление столбца с постоянным значением по умолчанию мгновенно обновляет каталог без перезаписи строк. Значение по умолчанию, вызывающее функцию, по-прежнему принудительно выполняет полную перезапись таблицы и устанавливает более надежную блокировку.

№ PostgreSQL Нельзя изменить существующее ограничение. Удалите существующее с помощью команды DROP CONSTRAINT, затем добавьте исправленное с помощью команды ADD CONSTRAINT. Оберните оба оператора в транзакцию, чтобы таблица всегда оставалась без правила.

Перечислите несколько действий, разделенных запятыми: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL Все изменения применяются за один проход, что быстрее и обеспечивает согласованность таблицы.

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

Операция RENAME обновляет только имя таблицы в системном каталоге. Сохраненные строки, индексы и ограничения остаются неизменными. Представления или функции, ссылающиеся на старое имя, могут потребовать обновления после этой операции.

Искусственный интеллект-помощники создают скрипты ALTER TABLE на основе описанного изменения, правильно упорядочивают шаги ADD, RENAME и ограничения, а также добавляют предложения USING для приведения типов. Они также отмечают операции, которые перезаписывают большие таблицы или удерживают ресурсоемкие блокировки.

Да. Искусственный интеллект-помощник анализирует миграцию, предупреждает о блокировках или полной перезаписи таблиц, предлагает пакетное или параллельное создание индексов и рекомендует использовать обертку.ping Изменения в транзакции, делающие развертывание обновлений схемы более безопасным.

Подведем итог этой публикации следующим образом: