Learn PostgreSQL — полное руководство по PostgreSQL с примерами
Содержание показать/скрыть
Learn PostgreSQL — это открытый проект на GitHub, который содержит подробное руководство по освоению PostgreSQL — одной из самых популярных систем управления реляционными базами данных (СУБД).
Этот материал создан для всех, кто хочет научиться:
-
что такое PostgreSQL и как с ним работать;
-
как выполнять SQL-запросы;
-
как устанавливать и настраивать базу данных;
-
как использовать PostgreSQL в собственных приложениях.
Проект доступен на GitHub, имеет открытый исходный код и включает упрощённые примеры, инструкции и полезные файлы, которые помогут в изучении СУБД.
Что такое PostgreSQL
PostgreSQL (часто сокращённо Postgres) — это открытая реляционная система управления базами данных (СУБД), предназначенная для хранения и обработки структурированной информации. Эта СУБД подходит как для небольших проектов, так и для серьёзных корпоративных решений, обладая высокой производительностью, расширяемостью и стабильностью.
В основе PostgreSQL лежит Structured Query Language (SQL) — стандартный язык для работы с реляционными базами, который позволяет хранить, извлекать и анализировать данные.
Зачем изучать PostgreSQL
PostgreSQL — одна из самых востребованных СУБД в мире программирования и разработки ПО. Навыки работы с SQL и PostgreSQL востребованы:
-
в веб-разработке;
-
при создании серверных приложений;
-
в аналитике данных и BI;
-
в разработке мобильных приложений и API.
Изучение PostgreSQL открывает дверь к пониманию фундаментальных принципов работы с данными во многих технологиях и сервисах.
Структура репозитория learn-postgresql
Репозиторий содержит следующие основные части:
Основные документы
-
README.md — вводная часть, объясняет, что такое PostgreSQL и почему важно изучать SQL.
-
install.md — инструкции по установке PostgreSQL на разные операционные системы.
-
tutorial.md — основной учебный материал с примерами SQL-запросов и объяснением, как они работают.
Примеры файлов
-
schema.sql — примеры определения схемы базы данных.
-
query.sql — примеры SQL-запросов.
-
package.json — настройки проекта и зависимости.
Как начать
Проект содержит инструкции по установке PostgreSQL в разных средах, в том числе:
Установка на macOS
-
Скачать Postgres.app и установить его в папку
Applications. -
Настроить переменные окружения для доступа к утилите
psqlчерез терминал.
Установка на Ubuntu
-
Обновить пакеты и установить PostgreSQL:
sudo apt update sudo apt install postgresql postgresql-contrib -
Создать пользователя и базу данных для дальнейшей работы.
Основы работы с SQL
После установки PostgreSQL важно освоить основные команды SQL:
Создание базы данных
CREATE DATABASE test;
Просмотр списка баз
\l
Работа с таблицами
CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT);
INSERT INTO users (name) VALUES ('Alice');
SELECT * FROM users;
Эти примеры — базовый набор навыков, с которого начинается работа с PostgreSQL.
Развёртывание PostgreSQL в приложении
Проект также затрагивает темы развёртывания PostgreSQL в реальном приложении:
-
настройка внешних сервисов;
-
интеграции с облачными хостингами;
-
примеры подключения через CI/CD.
Когда приложение готово, PostgreSQL может быть задействован как основная база данных на таких платформах, как Heroku, AWS RDS, Azure или другие облачные сервисы.
Примеры SQL-запросов PostgreSQL
Ниже приведены базовые и часто используемые примеры SQL-команд для работы с PostgreSQL. Они подойдут новичкам и тем, кто только начинает работать с базами данных.
Создание базы данных
Используется для создания новой базы данных в PostgreSQL:
CREATE DATABASE my_database;
После выполнения команды база данных появится в списке доступных.
Подключение к базе данных
Подключение к нужной базе через консоль psql:
\c my_database
Создание таблицы
Пример создания простой таблицы пользователей:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username TEXT NOT NULL,
email TEXT UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
В таблице:
-
id— уникальный идентификатор -
username— имя пользователя -
email— электронная почта -
created_at— дата создания записи
Добавление данных в таблицу
Добавление новой записи:
INSERT INTO users (username, email)
VALUES ('admin', 'admin@example.com');
Получение данных из таблицы
Выбор всех записей из таблицы:
SELECT * FROM users;
Выбор конкретных столбцов:
SELECT username, email FROM users;
Фильтрация данных (WHERE)
Получение пользователя с определённым именем:
SELECT * FROM users
WHERE username = 'admin';
Обновление данных
Изменение email у пользователя:
UPDATE users
SET email = 'newmail@example.com'
WHERE username = 'admin';
Удаление данных
Удаление записи из таблицы:
DELETE FROM users
WHERE username = 'admin';
Сортировка данных (ORDER BY)
Сортировка пользователей по дате создания:
SELECT * FROM users
ORDER BY created_at DESC;
Ограничение количества записей (LIMIT)
Получение последних 5 пользователей:
SELECT * FROM users
ORDER BY id DESC
LIMIT 5;
Подсчёт записей
Количество строк в таблице:
SELECT COUNT(*) FROM users;
Создание индекса
Индекс ускоряет поиск по столбцу:
CREATE INDEX idx_users_username
ON users(username);
Удаление таблицы
Полное удаление таблицы из базы данных:
DROP TABLE users;
Просмотр списка таблиц
В консоли PostgreSQL:
\dtТиповые ошибки PostgreSQL и их решения
При работе с PostgreSQL пользователи часто сталкиваются с типовыми ошибками, связанными с подключением, правами доступа, синтаксисом SQL или структурой базы данных. Ниже рассмотрены самые распространённые проблемы и способы их исправления.
Ошибка: password authentication failed for user
Описание проблемы:
PostgreSQL отклоняет подключение из-за неверного пароля или имени пользователя.
Возможные причины:
-
указан неправильный пароль;
-
пользователь не существует;
-
используется неверный метод аутентификации.
Решение:
-
Проверьте имя пользователя:
\du -
Сбросьте пароль пользователя:
ALTER USER username WITH PASSWORD 'new_password'; -
Убедитесь, что используется правильный пользователь при подключении.
Ошибка: database does not exist
Описание проблемы:
Попытка подключиться к базе данных, которой нет в системе.
Возможные причины:
-
база данных не была создана;
-
допущена ошибка в названии.
Решение:
-
Просмотрите список доступных баз:
\l -
Создайте базу данных при необходимости:
CREATE DATABASE my_database;
Ошибка: relation does not exist
Описание проблемы:
PostgreSQL не может найти таблицу или представление.
Возможные причины:
-
таблица ещё не создана;
-
используется другая схема;
-
ошибка в названии таблицы.
Решение:
-
Проверьте список таблиц:
\dt -
Укажите схему явно:
SELECT * FROM public.users; -
Проверьте регистр символов в названии.
Ошибка: permission denied for table
Описание проблемы:
У пользователя нет прав на выполнение операции с таблицей.
Возможные причины:
-
отсутствуют права SELECT, INSERT или UPDATE;
-
таблица принадлежит другому пользователю.
Решение:
-
Выдайте необходимые права:
GRANT ALL PRIVILEGES ON TABLE users TO username; -
Проверьте владельца таблицы:
\dp users
Ошибка: syntax error at or near
Описание проблемы:
Ошибка синтаксиса SQL-запроса.
Возможные причины:
-
пропущена запятая или скобка;
-
используется зарезервированное слово;
-
неверный порядок команд.
Решение:
-
внимательно проверьте запрос;
-
используйте простой формат записи;
-
убедитесь, что все скобки закрыты.
Пример корректного запроса:
SELECT id, username FROM users;
Ошибка: duplicate key value violates unique constraint
Описание проблемы:
Попытка вставить данные, которые нарушают уникальность.
Возможные причины:
-
повторяющееся значение в поле с UNIQUE;
-
дублирующийся первичный ключ.
Решение:
-
Проверьте существующие данные:
SELECT * FROM users WHERE email = 'test@example.com'; -
Используйте проверку перед вставкой или обновлением данных.
Ошибка: could not connect to server
Описание проблемы:
PostgreSQL не отвечает на запрос подключения.
Возможные причины:
-
сервер PostgreSQL не запущен;
-
используется неправильный порт;
-
служба была остановлена.
Решение:
-
Проверьте статус сервера:
sudo systemctl status postgresql -
Запустите сервис при необходимости:
sudo systemctl start postgresql
Ошибка: too many connections
Описание проблемы:
Превышено допустимое количество подключений к базе данных.
Возможные причины:
-
слишком много активных соединений;
-
соединения не закрываются корректно.
Решение:
-
Посмотрите активные подключения:
SELECT * FROM pg_stat_activity; -
Завершите неиспользуемые подключения или увеличьте лимит.
Полезные советы
-
Регулярно проверяйте журналы PostgreSQL — они помогают быстро найти причину ошибки.
-
Используйте понятные имена таблиц и столбцов.
-
Проверяйте запросы перед выполнением на рабочей базе.
-
Делайте резервные копии перед изменением структуры данных.
Информация