SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Базы данных

Введение в PostgreSQL: установка, подключение и первые SQL-команды

PostgreSQL — объектно-реляционная СУБД: сервер хранит данные и выполняет SQL-запросы, а приложение или клиентская утилита подключается к нему. Начать можно с отдельной учебной базы и последовательности CREATE TABLE, INSERT, SELECT, UPDATE и DELETE.

Введение в PostgreSQL

Что хранится на сервере

Один экземпляр сервера может обслуживать несколько баз. В базе находятся таблицы и другие объекты. Установленный клиент psql сам по себе не означает, что сервер запущен или у пользователя есть право создать базу.

Какие возможности учитывать

  • Открытый исходный код и разрешительная лицензия позволяют использовать и изменять PostgreSQL в условиях его лицензии.
  • Расширяемость включает пользовательские типы, функции, операторы и расширения. Возможность установить конкретное расширение зависит от окружения и прав.
  • Ограничения целостности и транзакции помогают согласованно менять данные. Резервное копирование нужно отдельно настроить и проверить восстановлением.
  • Работа с большими данными требует подходящей схемы, индексов, запросов и ресурсов: универсальная высокая скорость не гарантируется самим выбором СУБД.
  • Приложения на Python, Java, C++ и других языках используют подходящие драйверы и интерфейсы. Язык приложения не нужно путать с языком серверной функции.

Установка и подключение

Шаг 1. Выбрать пакет для своей системы

Откройте официальный раздел Downloads и выберите ОС и способ установки. Графический мастер есть не в каждом варианте: Linux-пакет, Windows-установщик и сборка из исходников имеют разные инструкции. Установите поддерживаемую версию, запустите сервер и выясните адрес, порт и способ аутентификации.

Шаг 2. Создать отдельную учебную базу

Следующая команда выполняется в терминале ОС, где доступна утилита createdb. LEARNING_USER — заменяемый пример имени заранее созданной роли PostgreSQL; для этой операции ей нужны соответствующие права. Пример предполагает локальный сервер на порту 5432:

createdb --host=127.0.0.1 --port=5432 --username=LEARNING_USER smartquery_demo

Если администратор уже выделил базу, создавать ещё одну не нужно. Ошибки «command not found», отказ соединения и отсутствие прав означают разные проблемы. Не удаляйте существующую базу, чтобы обойти ошибку совпавшего имени. createdb — клиентская программа, а не SQL-команда для редактора запросов pgAdmin.

Шаг 3. Подключиться через psql

psql --host=127.0.0.1 --port=5432 --username=LEARNING_USER --dbname=smartquery_demo

Пароль вводят по запросу, если выбранный способ аутентификации его требует. Роль базы отличается от учётной записи ОС. В подключённой сессии выполните:

SELECT current_database(), current_user;

Проверьте, что выбраны учебная база и нужная роль. Далее идут SQL-команды для этой же сессии. Для выхода из psql используется команда \q.

Основные операции: один последовательный пример

Выполняйте блоки по порядку в одном подключении. Временная таблица и явный ROLLBACK ограничивают пример учебным сеансом; работающую таблицу приложения менять не требуется.

Создать таблицу

BEGIN;
CREATE TEMP TABLE demo_books (
    id integer PRIMARY KEY,
    title text NOT NULL,
    price numeric(8, 2) NOT NULL CHECK (price >= 0)
);

В примере id — уникальный ключ, title обязателен, price хранит десятичное число с двумя знаками после точки и не может быть отрицательной. TEMP означает временную таблицу текущего сеанса.

Вставить строки

INSERT INTO demo_books (id, title, price)
VALUES (1, 'SQL basics', 500.00),
       (2, 'Data design', 700.00);

Имена столбцов перечислены явно. Значения в одинарных кавычках — строковые литералы, а 500.00 — число. Повторная вставка тех же id в ту же таблицу нарушит первичный ключ.

Выбрать данные

SELECT id, title, price
FROM demo_books
ORDER BY id;

Ожидаются две строки с id 1 и 2, ценами 500.00 и 700.00. ORDER BY задаёт порядок; без него порядок строк не обещается. WHERE добавляют, если нужны только подходящие записи.

Обновить строку

SELECT id, title, price FROM demo_books WHERE id = 1;
UPDATE demo_books
SET price = 550.00
WHERE id = 1
RETURNING id, title, price;

Первый SELECT показывает выбранную строку до изменения. RETURNING покажет новую цену 550.00. UPDATE без WHERE изменит все строки таблицы, поэтому условие сначала проверяют отдельно.

Удалить строку

SELECT id, title, price FROM demo_books WHERE id = 2;
DELETE FROM demo_books
WHERE id = 2
RETURNING id, title;

SELECT id, title, price FROM demo_books ORDER BY id;
ROLLBACK;

До ROLLBACK останется строка id 1 с ценой 550.00; DELETE RETURNING покажет удалённую строку id 2. DELETE без WHERE удаляет все строки, сохраняя таблицу. Завершающий ROLLBACK отменяет весь учебный блок, включая создание временной таблицы. Если любой SQL внутри блока завершился ошибкой, выполните ROLLBACK перед новой попыткой.

Что проверить после знакомства

  • Различаете ли вы программу psql, утилиту createdb и SQL, который выполняет сервер.
  • Работаете ли вы в нужной базе и роли, а не с данными приложения.
  • Понимаете ли область WHERE и видите ли фактический результат изменения.
  • Нужны ли постоянные таблицы, резервирование и права приложения: учебный пример их не настраивает.

Документация