Как создать таблицу в pgAdmin 4: через мастер и SQL-запросом

Таблицу в pgAdmin 4 создают двумя способами: мастером через правый щелчок по узлу Tables и командой CREATE TABLE в Query Tool.

Разбираем оба на примере школ и курсов, показываем типы данных, заполнение таблицы и семь частых ошибок с текстами сообщений сервера.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3057 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3711 экспертных мнений Подписаться на Телеграм-канал
Обложка: Как создать таблицу в pgAdmin 4: через мастер и SQL-запросом

Создать таблицу в pgAdmin 4 можно двумя способами. Через мастер: в дереве слева раскройте базу до узла Tables, щёлкните по нему правой кнопкой и выберите «Create» → «Table…», задайте имя, на вкладке «Columns» добавьте столбцы и нажмите «Save». Через SQL: откройте «Query Tool», вставьте команду CREATE TABLE и нажмите F5.

Мастер удобен, пока вы учитесь и хотите видеть все параметры перед глазами. SQL быстрее, его можно сохранить и повторить на другом сервере. Ниже разберём оба способа на одном примере, а заодно создание базы, заполнение таблицы и ошибки, с которыми новички сталкиваются чаще всего. Если язык запросов пока совсем незнаком, начните с обзора языка SQL.

CheckroiCheckroiПодборка курсов по PostgreSQL158 курсов • 27 школСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Что нужно подготовить

Рой готовит рабочее место для работы с базой данных PostgreSQL

pgAdmin сам данные не хранит: это графическая оболочка, а таблицы живут на сервере PostgreSQL. Перед началом проверьте три вещи:

  • установлен PostgreSQL и сервер запущен, локально или на хостинге;
  • установлен pgAdmin 4 с официальной страницы загрузки, есть версии для Windows, macOS и Linux;
  • сервер зарегистрирован в pgAdmin: в дереве «Servers» виден ваш сервер, и при щелчке по нему он подключается без ошибки пароля.

Интерфейс pgAdmin по умолчанию английский. Русский включается в настройках: «File» → «Preferences» → «Miscellaneous» → «User Interface» → поле «Language» (в документации pgAdmin это раздел о настройках интерфейса). В статье подписи даём по-английски, а русский вариант из файла перевода pgAdmin ставим в скобках.

Если pgAdmin не нравится, ту же работу делает DBeaver, у нас есть инструкция по подключению DBeaver к PostgreSQL.

Как создать базу данных в pgAdmin

Для учебных таблиц заведите отдельную базу, служебную postgres лучше не трогать. Создаётся база так:

  1. Раскройте сервер в дереве слева и найдите узел «Databases» («Базы данных»).
  2. Щёлкните по нему правой кнопкой и выберите «Create» → «Database…» («Создать» → «База данных…»).
  3. На вкладке «General» в поле «Database» впишите имя, например school_db. Имя пишите латиницей в нижнем регистре, почему так, объясним в разделе об ошибках.
  4. Нажмите «Save». База появится в дереве.

Создать базу может суперпользователь или роль с атрибутом CREATEDB, так сказано в документации PostgreSQL. Если пункта «Database…» нет или сохранение падает с ошибкой прав, подключитесь под пользователем postgres.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Создание таблицы через мастер

Для примера сделаем таблицу школ: номер, который база проставит сама, и название.

  1. Раскройте путь «Databases» → school_db → «Schemas» → public → «Tables».
  2. Щёлкните правой кнопкой по «Tables» и выберите «Create» → «Table…» («Создать» → «Таблица…»).
  3. На вкладке «General» («Общие») заполните «Name» («Имя»): schools. Поля «Owner» и «Schema» оставьте как есть, по умолчанию владельцем становится роль, которая создаёт таблицу.
  4. Перейдите на вкладку «Columns» («Столбцы») и нажмите плюс, чтобы добавить строку.
  5. Для первого столбца задайте «Name» = id, «Data type» = integer, включите переключатели «Not NULL?» и «Primary key?» («Не NULL?» и «Первичный ключ?»).
  6. Снова нажмите плюс и добавьте name с типом character varying. В поле «Length/Precision» («Длина/точность») поставьте 100 и включите «Not NULL?».
  7. Откройте вкладку «SQL»: там pgAdmin показывает команду, которую отправит на сервер. Проверьте её и нажмите «Save» («Сохранить»).

Таблица появится в узле «Tables». Если её не видно, щёлкните по «Tables» правой кнопкой и выберите «Refresh…» («Обновить…»).

Ограничения, которые не помещаются в переключатели, задаются на вкладке «Constraints» («Ограничения»). Внутри неё отдельные вкладки: «Primary Key», «Foreign Key», «Check», «Unique» и «Exclude». На каждой порядок одинаковый: плюс добавляет ограничение, значок карандаша открывает его настройки. Подробно все поля описаны в справке по диалогу таблицы.

Какой тип данных выбрать

Тип столбца влияет на то, что в него можно записать и как с ним считать. Для учебных таблиц хватает восьми типов:

Тип Что хранит Пример
integer целые числа до 2,1 млрд номер, количество
bigint большие целые счётчики событий
varchar(n) строка не длиннее n символов название, email
text строка без ограничения длины описание, отзыв
numeric(10, 2) точное число, всего 10 цифр, из них 2 после запятой цена, сумма
date дата без времени дата старта
timestamptz дата и время с часовым поясом момент создания записи
boolean да или нет активен ли курс

numeric(10, 2) стоит разобрать отдельно, его часто путают. Первое число означает точность, то есть все значащие цифры. Второе означает масштаб, цифры после запятой. В документации PostgreSQL пример такой: у числа 23.5141 точность 6 и масштаб 4. Значит, в numeric(10, 2) влезет максимум 99 999 999,99, а 1234,567 округлится до 1234,57.

Типы, ключи и связи между таблицами подробно разбирают на курсах по PostgreSQL, там же учат проектировать схему под задачу.

Как создать таблицу SQL-запросом в Query Tool

Схема двух связанных таблиц базы данных на листе бумаги

Мастер хорош для одной таблицы. Когда таблиц несколько и они связаны, быстрее написать SQL. Так таблицы создают в работе SQL-аналитики и разработчики баз данных. Порядок такой:

  1. Выделите в дереве базу school_db.
  2. Откройте меню «Tools» → «Query Tool» («Инструменты» → «Инструмент запросов»). То же окно открывается правым щелчком по базе.
  3. Вставьте код ниже в редактор.
  4. Нажмите F5 или кнопку «Execute script» («Выполнить скрипт»). Чтобы выполнить только запрос под курсором, есть Alt+F5 (на Mac Option+F5), так написано в описании панели Query Tool.
  5. Посмотрите вкладку «Messages» («Сообщения») внизу: там будет ответ сервера.

Код создаёт две связанные таблицы, школы и их курсы. Если таблицу schools вы уже сделали мастером, удалите её или пропустите первую команду:

CREATE TABLE schools (
    id   integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    name varchar(100) NOT NULL UNIQUE
);

CREATE TABLE courses (
    id         integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    school_id  integer NOT NULL REFERENCES schools (id),
    title      varchar(200) NOT NULL,
    price      numeric(10, 2) CHECK (price >= 0),
    start_date date,
    created_at timestamptz NOT NULL DEFAULT now()
);

Что здесь происходит:

  • GENERATED ALWAYS AS IDENTITY делает столбец автонумерованным. Номер ставит сама база, вручную его не пишут;
  • PRIMARY KEY задаёт первичный ключ, по нему строка однозначно находится. Без него pgAdmin не даст редактировать данные в таблице;
  • REFERENCES schools (id) создаёт внешний ключ: курс нельзя записать за школу, которой нет;
  • CHECK (price >= 0) не пустит отрицательную цену;
  • DEFAULT now() сам подставит время создания записи.

Порядок команд важен: schools создаётся первой, потому что courses на неё ссылается. Про отсутствие значения в столбце и NOT NULL подробнее рассказываем в статье о NULL в SQL.

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

Строки добавляются командой INSERT в том же Query Tool. Столбец id не указываем, номера база раздаст сама:

INSERT INTO schools (name)
VALUES ('Школа данных'), ('Школа разработки');

INSERT INTO courses (school_id, title, price, start_date)
VALUES
    (1, 'Основы SQL', 24900, '2026-11-10'),
    (1, 'PostgreSQL для аналитиков', 39900.50, '2026-12-01'),
    (2, 'Python с нуля', 19900, NULL);

Проверим, что связь работает. Этот запрос собирает курсы вместе с названием школы:

SELECT c.title, s.name AS school, c.price
FROM courses AS c
JOIN schools AS s ON s.id = c.school_id
ORDER BY c.price DESC;

На вкладке «Data Output» («Результат») получится:

title school price
PostgreSQL для аналитиков Школа данных 39900.50
Основы SQL Школа данных 24900.00
Python с нуля Школа разработки 19900.00

Синтаксис SELECT с условиями и соединениями подробно разобран в статье о команде SELECT. Примеры там на MySQL, но базовые запросы в PostgreSQL пишутся так же.

Без SQL данные тоже можно посмотреть и поправить. Щёлкните по таблице правой кнопкой и выберите «View/Edit Data» → «All Rows» («Просмотр/редактирование данных» → «Все строки»). Откроется сетка, в которой ячейки правятся двойным щелчком, а новая строка добавляется кнопкой «Add row» («Добавить строку»). Изменения уходят на сервер только после кнопки «Save Data Changes» («Сохранить изменения данных») или клавиши F6.

Если сетка не даёт ничего менять, у таблицы нет первичного ключа. По справке pgAdmin, без OID или первичного ключа данные показываются только для чтения.

Частые ошибки при создании таблиц

Рой исправил ошибку в запросе и радуется зелёному результату

Сообщение сервера появляется на вкладке «Messages» с пометкой ERROR. Тексты ниже даны на английском. Если сервер настроен на русский язык, тот же смысл придёт в переводе. Это семь ошибок, которые чаще всего возникают на первых таблицах.

Сообщение Причина Что делать
relation "schools" already exists таблица с таким именем уже есть в схеме выбрать другое имя или написать CREATE TABLE IF NOT EXISTS
relation "students" does not exist таблицу создали с заглавной буквы, Students, а в запросе имя без кавычек писать "Students" в кавычках или пересоздать таблицу в нижнем регистре
violates foreign key constraint "courses_school_id_fkey" в school_id номер школы, которой нет в schools сначала добавить школу, потом курс
numeric field overflow число не помещается в numeric(10, 2), например 123 456 789 увеличить точность, например до numeric(12, 2)
violates check constraint "courses_price_check" в цену попало отрицательное число исправить значение, проверка работает как задумано
null value in column "title" ... violates not-null constraint обязательный столбец оставили пустым передать значение или убрать NOT NULL
cannot insert a non-DEFAULT value into column "id" в столбец GENERATED ALWAYS AS IDENTITY пытаются записать свой номер не указывать id в INSERT

Коварнее всего вторая строка таблицы. В мастере легко назвать таблицу Students по привычке, и pgAdmin сохранит имя в кавычках, чтобы не потерять заглавную букву. Функция pgAdmin, которая решает, нужны ли кавычки, ставит их на любое имя, где есть что-то кроме строчной латиницы, цифр и подчёркивания. А PostgreSQL переводит имена без кавычек в нижний регистр, поэтому SELECT * FROM Students ищет таблицу students и не находит.

Решение: имена таблиц и столбцов пишите латиницей в нижнем регистре, слова разделяйте подчёркиванием: например start_date вместо StartDate.

Ещё одна ошибка ждёт на рабочем сервере, куда вы зашли под обычным пользователем: permission denied for schema public. В PostgreSQL 15 право создавать объекты в схеме public у всех пользователей по умолчанию отобрали, это есть в примечаниях к выпуску 15. Изменение касается новых кластеров и новых баз. Решение: попросить у администратора право CREATE на схему или отдельную схему для себя.

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Где освоить PostgreSQL системно

Таблицы в pgAdmin вы создавать умеете. Дальше идут индексы, транзакции, оптимизация запросов и проектирование схемы под реальные данные. Это стоит разобрать на курсе с практикой и проверкой заданий. Вот курсы по PostgreSQL из нашего каталога:

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
PostgreSQL для начинающих
Перейти на сайт курса
SkillboxSkillbox24 813 ₽ - 1 месяцОбзор курса
PostgreSQL База
Перейти на сайт курса
Слёрм (Slurm)Слёрм30 000 ₽7500 ₽/мес.2 годаОбзор курса
Профессия «Аналитик данных с нуля до middle»
Перейти на сайт курса
НетологияНетология145 600 ₽6066 ₽/мес.12 месяцевОбзор курса
Профессия «Python-разработчик»
Перейти на сайт курса
SkillboxSkillbox157 335 ₽5987 ₽/мес.10 месяцевОбзор курса
Профессия «Data Scientist PRO»
Перейти на сайт курса
SkillboxSkillbox224 595 ₽7245 ₽/мес.12 месяцевОбзор курса

Больше программ — в полном каталоге курсов по PostgreSQL

Если думаете сделать базы данных профессией, посмотрите, чем занимается администратор баз данных и как стать SQL-разработчиком за год.

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

Какой пароль спрашивает pgAdmin 4?

Обычно один из двух. Пароль пользователя postgres вы задали при установке PostgreSQL, он нужен для подключения к серверу. Мастер-пароль защищает сохранённые пароли серверов; по справке pgAdmin, в настольном режиме с версии 7.2 пароли по умолчанию хранятся в хранилище паролей системы, и мастер-пароль не нужен. Если хранилище недоступно, pgAdmin снова попросит мастер-пароль.

Как сделать pgAdmin на русском?

Откройте «File» → «Preferences», в разделе «Miscellaneous» выберите «User Interface» и в поле «Language» поставьте русский. Перевод неполный, часть подписей останется на английском.

Как создать базу данных в pgAdmin 4?

Щёлкните правой кнопкой по узлу «Databases», выберите «Create» → «Database...», впишите имя в поле «Database» и нажмите «Save». Нужны права суперпользователя или атрибут CREATEDB.

Почему созданная таблица не видна в дереве?

Дерево не всегда обновляется само, особенно после SQL-запроса. Щёлкните по узлу «Tables» правой кнопкой и выберите «Refresh...». Если таблицы всё равно нет, проверьте, в какой базе был открыт Query Tool.

Почему в pgAdmin нельзя редактировать данные таблицы?

У таблицы нет первичного ключа, и pgAdmin не может однозначно найти строку, поэтому показывает данные только для чтения. Добавьте первичный ключ: ALTER TABLE имя ADD PRIMARY KEY (id);.

Как удалить таблицу в pgAdmin?

Командой DROP TABLE courses; в Query Tool или правым щелчком по таблице в дереве. Если на таблицу ссылается другая (например, DROP TABLE schools;, пока есть courses), PostgreSQL ответит «cannot drop table schools because other objects depend on it»: сначала удалите зависимую таблицу или добавьте CASCADE, понимая, что внешние ключи тоже исчезнут.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!