/
Вопросы и ответы
/
SQL
/

Как добавить столбец в postgresql

Как добавить столбец в postgresql

3 года назад

Nikolai Gagarinov

Ответы

1

Чтобы добавить столбец в таблицу PostgreSQL, вы можете использовать команду ALTER TABLE. Например, предположим, что у вас есть таблица "users" существующими столбцами "id", "name" и "email". Чтобы добавить новый столбец "age" в эту таблицу, выполните следующий SQL-запрос:

1
ALTER TABLE users ADD COLUMN age INTEGER;

Этот запрос добавит новый столбец "age" с типом данных INTEGER к таблице "users". После выполнения этого запроса, новый столбец "age" будет доступен для использования в таблице.

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

1
ALTER TABLE users ADD COLUMN gender VARCHAR(10) DEFAULT 'unknown' NOT NULL;

Этот запрос добавляет новый столбец "gender" с типом данных VARCHAR и устанавливает значение по умолчанию 'unknown'. Он также указывает, что значение этого столбца не может быть NULL.

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

2 года назад

Maksim Litvinov

0

Столбец в таблицу PostgreSQL добавляет команда ALTER TABLE ... ADD COLUMN:

1
ALTER TABLE users ADD COLUMN age integer;

У существующих строк в новом столбце будет NULL.

Со значением по умолчанию

1
ALTER TABLE users ADD COLUMN is_active boolean NOT NULL DEFAULT true;

Все существующие строки получат true. С PostgreSQL 11 такая команда на большой таблице выполняется мгновенно: значение по умолчанию записывается в метаданные, таблица не переписывается. Исключение — изменчивые выражения вроде DEFAULT random().

NOT NULL без значения по умолчанию

1
2
ALTER TABLE users ADD COLUMN phone text NOT NULL;
-- ERROR: column "phone" of relation "users" contains null values

В таблице уже есть строки, и им нечего записать. Порядок действий:

1
2
3
ALTER TABLE users ADD COLUMN phone text;
UPDATE users SET phone = '' WHERE phone IS NULL;
ALTER TABLE users ALTER COLUMN phone SET NOT NULL;

Несколько столбцов сразу

1
2
3
ALTER TABLE users
  ADD COLUMN city text,
  ADD COLUMN birth_date date;

Если столбец может уже существовать

1
ALTER TABLE users ADD COLUMN IF NOT EXISTS age integer;

Полезно в скриптах миграций, которые запускают повторно.

Внешний ключ

1
ALTER TABLE orders ADD COLUMN user_id bigint REFERENCES users (id);

Порядок столбцов

PostgreSQL всегда добавляет столбец в конец таблицы. Поставить его между другими нельзя. Нужный порядок задают в SELECT или в представлении (VIEW).

Другие изменения столбца

ЗадачаКоманда
ПереименоватьALTER TABLE users RENAME COLUMN age TO user_age;
Сменить типALTER TABLE users ALTER COLUMN age TYPE smallint;
УдалитьALTER TABLE users DROP COLUMN age;

На рабочей базе такие изменения делают через миграции: Alembic, Flyway, миграции Django или Rails.

Создание и изменение таблиц разбирают в курсе «SQL для разработчиков».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845