Создание базы, таблицы и GUI-клиенты

Создаём базу и таблицу, наполняем данными и сразу пробуем запросы в живой песочнице.

Таблица — это набор строк с одинаковой структурой столбцов; именно в таблицах PostgreSQL хранит данные.

Создание базы данных

Базу создают либо SQL-командой CREATE DATABASE, либо утилитой createdb из шелла. Оба способа делают одно и то же.

# Утилита из командной строки
createdb -U postgres shop

# Или внутри psql одной SQL-командой:
# CREATE DATABASE shop;

После этого подключаемся к новой базе: psql -U postgres -d shop или из psql командой \c shop.

Первая таблица и данные

Дальше всё — обычный стандартный SQL. Ниже самодостаточный пример: создаём таблицу товаров, добавляем строки и выбираем их. Этот код переносим и выполнится в любой реляционной базе — нажмите «Запустить» и поэкспериментируйте с запросом.

CREATE TABLE products (
    id    INTEGER PRIMARY KEY,
    name  TEXT NOT NULL,
    price INTEGER NOT NULL
);

INSERT INTO products (id, name, price) VALUES
    (1, 'Клавиатура', 2500),
    (2, 'Мышь', 1200),
    (3, 'Монитор', 18000),
    (4, 'Коврик', 600);

SELECT name, price
FROM products
WHERE price < 5000
ORDER BY price;

Вывод:

Коврик|600
Мышь|1200
Клавиатура|2500

Обратите внимание: здесь автоинкремент мы не использовали, а задали id вручную как INTEGER PRIMARY KEY. В самом PostgreSQL для автонумерации применяют SERIAL или GENERATED ... AS IDENTITY — об этом подробно в следующем разделе.

В PostgreSQL это выглядело бы так

Тот же смысл, но с PG-специфичной автонумерацией id и денежным типом — этот вариант не для песочницы, а для реального сервера:

CREATE TABLE products (
    id    SERIAL PRIMARY KEY,
    name  TEXT NOT NULL,
    price NUMERIC(10, 2) NOT NULL
);

SERIAL автоматически создаёт счётчик и сам подставляет следующее значение id при вставке.

Графические клиенты: pgAdmin и DBeaver

Консоль удобна для скриптов, но смотреть данные и схему часто приятнее в графическом интерфейсе. Два самых популярных клиента:

КлиентОсобенности
pgAdminофициальный клиент специально для PostgreSQL; дерево объектов, визуальный конструктор, графики нагрузки
DBeaverуниверсальный клиент для десятков СУБД; удобен, если работаете не только с PostgreSQL; есть бесплатная Community-версия

Оба показывают список таблиц, позволяют редактировать строки мышкой, строить запросы и видеть планы выполнения. Под капотом они всё равно отправляют тот же SQL — поэтому понимать команды важнее, чем кнопки.

Итог

  • База создаётся через CREATE DATABASE или утилиту createdb.
  • Таблицы и данные — это обычный стандартный SQL; в песочнице автонумерацию пишем как INTEGER PRIMARY KEY.
  • В реальном PostgreSQL для автонумерации используют SERIAL/IDENTITY.
  • pgAdmin — официальный GUI под PostgreSQL, DBeaver — универсальный клиент под многие СУБД.
Проверьте себя
1. Чем создают новую базу данных из командной строки?
Amkdir shop
Bcreatedb shop
Cpsql --new shop
Dpg_dump shop
2. Почему в SQL-песочнице автонумерацию пишут как INTEGER PRIMARY KEY, а не SERIAL?
ASERIAL устарел
BПесочница работает на SQLite, где SERIAL не поддерживается, а INTEGER PRIMARY KEY переносим
CINTEGER быстрее
DЭто одно и то же ключевое слово
3. Какой из клиентов создан специально для PostgreSQL?
ADBeaver
BpgAdmin
CMySQL Workbench
DphpMyAdmin
Поддержать проект