Знакомство с PostgreSQL
Что такое базы данных и зачем они нужны
Проблема, которую решают базы данных
Представьте, что вы создаете приложение для интернет-магазина. Вам нужно хранить:
- Информацию о товарах (название, цена, количество)
- Данные о клиентах (имя, email, адрес)
- Историю заказов
- Отзывы покупателей
Плохие решения:
- 📄 Excel-файлы — медленно, нет многопользовательского доступа, легко сломать
- 📝 Текстовые файлы — сложно искать, нет структуры, нет защиты от ошибок
- 💾 Переменные в коде — данные исчезают при перезапуске программы
Хорошее решение: База данных!
Что такое база данных?
База данных (БД) — это организованная коллекция данных, которая:
- Хранит информацию постоянно (не исчезает при выключении)
- Позволяет быстро искать нужные данные
- Обеспечивает одновременный доступ многих пользователей
- Защищает данные от потери и повреждения
- Проверяет корректность данных
Что такое СУБД?
СУБД (Система Управления Базами Данных) — это программа, которая управляет базами данных.
Примеры СУБД:
- PostgreSQL — о ней мы и будем говорить
- MySQL — популярна в веб-разработке
- Oracle — используется в крупных компаниях
- SQLite — маленькая, встраиваемая БД
- MongoDB — нереляционная (NoSQL) база данных
Почему PostgreSQL?
PostgreSQL (часто называют просто Postgres) — одна из самых мощных и надежных СУБД.
Преимущества:
- 🆓 Полностью бесплатная — даже для коммерческого использования
- 🔒 Надежная — не потеряет ваши данные даже при сбое
- 📚 Мощная — может обрабатывать миллионы записей
- 🌍 Популярная — используется Instagram, Apple, Spotify, Reddit
- 📖 Хорошо документирована — легко найти ответы на вопросы
- 🎓 Стандартная — знания PostgreSQL легко переносятся на другие СУБД
Где используется PostgreSQL:
- Веб-приложения (сайты, интернет-магазины)
- Мобильные приложения (серверная часть)
- Аналитические системы
- Финансовые приложения (банки, биржи)
- Геоинформационные системы (карты)
Как работает база данных?
┌─────────────┐
│ Приложение │ ← Ваш сайт или программа
└──────┬──────┘
│
│ SQL-запросы (команды)
▼
┌─────────────┐
│ PostgreSQL │ ← Обрабатывает запросы
└──────┬──────┘
│
│ Чтение/запись
▼
┌─────────────┐
│ Данные │ ← Файлы на диске
└─────────────┘
Пример взаимодействия:
- Пользователь открывает страницу товара на сайте
- Сайт отправляет запрос к PostgreSQL: "Дай информацию о товаре #123"
- PostgreSQL ищет товар в базе данных
- PostgreSQL отправляет данные обратно сайту
- Сайт показывает товар пользователю
Установка PostgreSQL
Для Windows
Шаг 1: Скачивание
- Откройте браузер и перейдите на https://www.postgresql.org/download/windows/
- Нажмите "Download the installer"
- Выберите последнюю версию для Windows (На данный момент это PostgreSQL 18.x)
- Скачайте установщик для вашей системы (обычно x86-64)
Шаг 2: Установка
- Запустите скачанный файл (например,
postgresql-18.x-windows-x64.exe) - Нажмите "Next" на приветственном экране
- Выберите папку установки (можно оставить по умолчанию)
- Выберите компоненты для установки:
- ✅ PostgreSQL Server (основной сервер)
- ✅ pgAdmin 4 (графический интерфейс)
- ✅ Command Line Tools (консольные инструменты)
- Stack Builder можно не ставить
- Выберите папку для данных (оставьте по умолчанию)
- ВАЖНО: Придумайте пароль для пользователя
postgresи ЗАПИШИТЕ его!- Пример хорошего пароля:
MySecret123! - Этот пароль понадобится для подключения
- Пример хорошего пароля:
- Оставьте порт 5432 (по умолчанию)
- Оставьте локаль по умолчанию
- Нажмите "Next" и дождитесь завершения установки
Шаг 3: Проверка установки
- Откройте меню "Пуск"
- Найдите папку "PostgreSQL 18"
- Запустите "SQL Shell (psql)"
- Нажимайте Enter на всех вопросах (оставляя значения по умолчанию)
- Когда появится запрос
Password for user postgres:, введите ваш пароль - Если вы увидели
postgres=#, установка прошла успешно!
Для macOS
Способ 1: Через Homebrew (рекомендуется)
-
Установите Homebrew, если еще не установлен:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Установите PostgreSQL:
brew install postgresql@18 -
Запустите PostgreSQL:
brew services start postgresql@18 -
Проверьте установку:
psql postgres
Способ 2: Postgres.app (самый простой)
- Скачайте Postgres.app с https://postgresapp.com/
- Перетащите приложение в папку Applications
- Откройте Postgres.app
- Нажмите "Initialize" для создания нового сервера
- Сервер запущен! Можете подключаться
Настройка PATH (для Homebrew):
Добавьте в ~/.zshrc или ~/.bash_profile:
export PATH="/opt/homebrew/opt/postgresql@18/bin:$PATH"
Для Linux (Ubuntu/Debian)
Шаг 1: Обновление системы
sudo apt update
sudo apt upgrade
Шаг 2: Установка PostgreSQL
# Установка PostgreSQL и дополнительных инструментов
sudo apt install postgresql postgresql-contrib
# Проверка статуса
sudo systemctl status postgresql
Шаг 3: Настройка
# Переключение на пользователя postgres
sudo -i -u postgres
# Запуск psql
psql
# Выход
\q
exit
Шаг 4: Создание собственного пользователя (опционально)
sudo -u postgres createuser --interactive
# Введите ваше имя пользователя
# Ответьте 'y' на вопрос о суперпользователе
Для Linux (Fedora/CentOS/RHEL)
# Установка
sudo dnf install postgresql-server postgresql-contrib
# Инициализация
sudo postgresql-setup --initdb
# Запуск и автозапуск
sudo systemctl start postgresql
sudo systemctl enable postgresql
Первое подключение через psql
Что такое psql?
psql — это консольный (текстовый) интерфейс для работы с PostgreSQL. Профессионалы часто предпочитают его графическим интерфейсам за скорость и мощность.
Запуск psql
Windows:
- Меню Пуск → PostgreSQL → SQL Shell (psql)
macOS/Linux:
psql postgres
# или
psql -U postgres
Первое подключение
После запуска psql вы увидите приглашение:
postgres=#
Это значит, что вы подключены к базе данных postgres (она создается по умолчанию).
Основные команды psql
Важно: Команды psql начинаются с обратного слэша \ и НЕ требуют точки с запятой.
-- Справка по командам
\?
-- Список всех баз данных
\l
-- Подключиться к другой базе данных
\c имя_базы
-- Список таблиц в текущей базе
\dt
-- Описание таблицы (структура)
\d имя_таблицы
-- Список пользователей
\du
-- Выход из psql
\q
-- Очистить экран
\! clear # Linux/macOS
\! cls # Windows
Выполнение SQL-команд
SQL-команды должны заканчиваться точкой с запятой ;
-- Посмотреть текущую дату
SELECT CURRENT_DATE;
-- Простая арифметика
SELECT 2 + 2;
-- Посмотреть версию PostgreSQL
SELECT version();
Полезные настройки psql
-- Включить расширенный вывод (для широких таблиц)
\x
-- Включить отображение времени выполнения запросов
\timing
-- Установить кодировку
\encoding UTF8
Пример первой сессии
-- Подключились к psql
postgres=# SELECT CURRENT_DATE;
date
------------
2024-01-15
(1 row)
postgres=# SELECT 10 * 5 AS результат;
результат
-----------
50
(1 row)
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype
-----------+----------+----------+-------------+-------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8
postgres=# \q
Работа с pgAdmin
Что такое pgAdmin?
pgAdmin — это графический (визуальный) интерфейс для PostgreSQL. Он упрощает многие задачи и отлично подходит для начинающих.
Запуск pgAdmin
Windows:
- Меню Пуск → PostgreSQL → pgAdmin 4
macOS:
- Applications → pgAdmin 4
Linux:
pgadmin4
При первом запуске pgAdmin попросит установить мастер-пароль — придумайте и запомните его.
Подключение к серверу
- В левой панели найдите "Servers"
- Раскройте список (если сервера нет, создайте его):
- Правый клик на "Servers" → Create → Server
- На вкладке "General":
- Name:
Local PostgreSQL(или любое имя)
- Name:
- На вкладке "Connection":
- Host:
localhost - Port:
5432 - Username:
postgres - Password: ваш пароль, который вы установили при установке
- ✅ Save password (чтобы не вводить каждый раз)
- Host:
- Нажмите "Save"
Интерфейс pgAdmin
После подключения вы увидите:
Servers
└── Local PostgreSQL
├── Databases
│ ├── postgres (база по умолчанию)
│ └── ...
├── Login/Group Roles (пользователи)
└── Tablespaces
Основные разделы:
- Databases — список баз данных
- Schemas — схемы (обычно работаем с public)
- Tables — таблицы с данными
- Views — представления (виртуальные таблицы)
Query Tool — окно для SQL-запросов
- Выберите базу данных
postgresв левой панели - Нажмите на иконку молнии ⚡ или Tools → Query Tool
- Откроется редактор SQL
Попробуйте выполнить:
SELECT 'Привет, PostgreSQL!' AS приветствие;
Нажмите F5 или кнопку ▶️ (Execute).
Просмотр данных
Когда у вас появятся таблицы:
- Раскройте Databases → postgres → Schemas → public → Tables
- Правый клик на таблице → View/Edit Data → All Rows
- Данные отобразятся в удобной таблице
Создание базы данных через pgAdmin
- Правый клик на "Databases"
- Create → Database
- В поле "Database" введите имя, например:
test_db - Нажмите "Save"
Создание первой базы данных
Планирование базы данных
Перед созданием базы нужно понять, что мы будем хранить. Давайте создадим БД для интернет-магазина.
Что нам нужно хранить:
- Товары (название, цена, количество)
- Клиенты (имя, email, телефон)
- Заказы (кто, когда, что заказал)
Но пока мы создадим только саму базу данных. Таблицы будем создавать на следующей неделе.
Создание базы через psql
-- Подключитесь к psql
-- Создайте новую базу данных
CREATE DATABASE my_shop;
-- Посмотрите список баз данных
\l
-- Подключитесь к новой базе
\c my_shop
-- Проверьте, что вы в правильной базе
SELECT current_database();
Вывод будет примерно таким:
postgres=# CREATE DATABASE my_shop;
CREATE DATABASE
postgres=# \c my_shop
You are now connected to database "my_shop" as user "postgres".
my_shop=# SELECT current_database();
current_database
------------------
my_shop
(1 row)
Создание базы через pgAdmin
- Откройте pgAdmin
- Подключитесь к серверу
- Правый клик на "Databases" → Create → Database
- General:
- Database:
my_shop - Owner:
postgres
- Database:
- Definition:
- Encoding:
UTF8 - Template:
template0 - Collation: оставьте по умолчанию
- Character type: оставьте по умолчанию
- Encoding:
- Нажмите "Save"
Удаление базы данных (если нужно)
Внимание: Это удалит все данные безвозвратно!
Через psql:
-- Сначала отключитесь от базы
\c postgres
-- Удалите базу
DROP DATABASE my_shop;
Через pgAdmin:
- Правый клик на базе данных → Delete/Drop
- Подтвердите удаление
Параметры создания базы данных
При создании можно указать дополнительные параметры:
CREATE DATABASE my_shop
WITH
OWNER = postgres
ENCODING = 'UTF8'
CONNECTION LIMIT = -1;
Параметры:
OWNER— владелец базы (обычно postgres)ENCODING— кодировка (UTF8 для поддержки всех языков)CONNECTION LIMIT— максимум подключений (-1 = без ограничений)
Структура PostgreSQL
Иерархия объектов
Кластер PostgreSQL (сервер)
│
├── База данных 1 (my_shop)
│ ├── Схема public
│ │ ├── Таблица products
│ │ ├── Таблица customers
│ │ └── Таблица orders
│ └── Схема archive
│ └── Таблица old_orders
│
└── База данных 2 (test_db)
└── Схема public
└── ...
Кластер — это один запущенный сервер PostgreSQL. В нем может быть много баз данных.
База данных — изолированная коллекция данных. Базы не видят друг друга.
Схема — пространство имен внутри базы. По умолчанию все создается в схеме public.
Таблица — структура для хранения данных (строки и столбцы).
Зачем нужны разные базы данных?
- Изоляция проектов — база для магазина и база для блога не мешают друг другу
- Безопасность — можно дать пользователю доступ только к одной базе
- Резервное копирование — можно сохранить только нужную базу
- Организация — проще управлять отдельными проектами
Служебные базы данных
После установки PostgreSQL создает три базы:
- postgres — база по умолчанию, для подключения и административных задач
- template0 — шаблон для создания новых баз (не трогайте!)
- template1 — еще один шаблон (тоже не трогайте!)
Правило: Не храните свои данные в базе postgres! Создавайте отдельные базы.
Пользователи и права
При установке создается суперпользователь postgres с полными правами.
Просмотр пользователей:
-- В psql
\du
-- Или SQL-запросом
SELECT usename FROM pg_user;
На следующих неделях мы научимся создавать дополнительных пользователей с ограниченными правами.
Практическое задание
Задание 1: Установка и проверка
- Установите PostgreSQL на свой компьютер
- Установите пароль для пользователя
postgresи запишите его - Запустите psql и выполните команду:
SELECT version(); - Скопируйте версию PostgreSQL (например, "PostgreSQL 18.1")
Задание 2: Работа с psql
Выполните в psql следующие команды и запишите результаты:
-- 1. Посмотрите текущую дату
SELECT CURRENT_DATE;
-- 2. Вычислите 123 * 456
SELECT 123 * 456 AS результат;
-- 3. Посмотрите список баз данных
\l
-- 4. Посмотрите список пользователей
\du
Задание 3: Создание базы данных
- Создайте базу данных с именем
my_shopчерез psql - Подключитесь к ней
- Проверьте, что вы подключены к правильной базе:
SELECT current_database(); - Сделайте скриншот результата
Задание 4: Работа с pgAdmin
- Установите и запустите pgAdmin
- Подключитесь к серверу PostgreSQL
- Найдите созданную базу
my_shopв дереве объектов - Откройте Query Tool
- Выполните запрос:
SELECT 'Я научился работать с PostgreSQL!' AS сообщение; - Сделайте скриншот окна pgAdmin с результатом
Задание 5: Эксперименты
Попробуйте выполнить и понять результат:
-- Текущее время
SELECT CURRENT_TIME;
-- Текущие дата и время
SELECT NOW();
-- Сколько будет через 7 дней?
SELECT NOW() + INTERVAL '7 days';
-- Длина строки
SELECT LENGTH('PostgreSQL');
-- Верхний регистр
SELECT UPPER('привет, мир!');
-- Случайное число от 0 до 1
SELECT RANDOM();
-- Случайное число от 1 до 100
SELECT FLOOR(RANDOM() * 100 + 1)::INTEGER;
Контрольные вопросы
Проверьте себя, ответив на эти вопросы:
- Что такое база данных и чем она лучше Excel-файла?
- Что такое СУБД? Приведите три примера СУБД.
- Какие основные преимущества PostgreSQL?
- В чем разница между psql и pgAdmin?
- Какая команда показывает список баз данных в psql?
- Как подключиться к другой базе данных в psql?
- Какие три служебные базы создаются при установке PostgreSQL?
- Почему не стоит хранить свои данные в базе
postgres? - Какая команда создает новую базу данных?
- Как выйти из psql?
Типичные проблемы и решения
Проблема: Забыл пароль postgres
Решение (Windows):
- Найдите файл
pg_hba.conf(обычно вC:\Program Files\PostgreSQL\18\data\) - Откройте его в блокноте от имени администратора
- Найдите строки с
md5и замените наtrust - Перезапустите службу PostgreSQL
- Подключитесь без пароля и смените его:
ALTER USER postgres PASSWORD 'новый_пароль'; - Верните
md5обратно вpg_hba.conf - Снова перезапустите службу
Проблема: psql не найден (command not found)
Решение: Добавьте PostgreSQL в PATH.
Windows: Добавьте в PATH путь C:\Program Files\PostgreSQL\18\bin
macOS/Linux: Добавьте в ~/.bashrc или ~/.zshrc:
export PATH="/usr/lib/postgresql/18/bin:$PATH"
Проблема: Не могу подключиться к серверу
Проверьте:
- Запущена ли служба PostgreSQL?
- Windows: Службы → PostgreSQL
- Linux:
sudo systemctl status postgresql
- Правильный ли порт? (по умолчанию 5432)
- Правильный ли пароль?
Проблема: Кириллица отображается неправильно
Решение:
-- В psql установите кодировку
\encoding UTF8
-- При создании базы указывайте UTF8
CREATE DATABASE my_db ENCODING 'UTF8';
Полезные ресурсы
📚 Официальная документация:
- https://www.postgresql.org/docs/ (на английском)
- https://postgrespro.ru/docs/ (на русском)
💬 Сообщества:
- Stack Overflow с тегом [postgresql]
- Reddit: r/PostgreSQL
- Telegram: PostgreSQL Russian Community
🛠️ Инструменты:
- pgAdmin: https://www.pgadmin.org/
- DBeaver: https://dbeaver.io/
- TablePlus: https://tableplus.com/