Справочный гайд по командам PostgreSQL

Основные команды по управлению базой данных PostgreSQL. Управление базой данных, управление пользователями базы данных, управление таблицами, управление индексами, управление записями таблиц, связанные запросы, выгрузки данных во внешние источники, создание скриптов, загрузка данных из разных форматов

1. Установка PostgreSQL на разные ОС

Ubuntu/Debian

# Обновление пакетов  
sudo apt update  

# Установка PostgreSQL  
sudo apt install postgresql postgresql-contrib  

# Проверка статуса  
sudo systemctl status postgresql  

# Включение автозапуска  
sudo systemctl enable postgresql  

Manjaro/Arch Linux

# Установка PostgreSQL  
sudo pacman -S postgresql  

# Инициализация БД  
sudo su - postgres -c "initdb --locale en_US.UTF-8 -D /var/lib/postgres/data"  

# Запуск службы  
sudo systemctl start postgresql  

# Включение автозапуска  
sudo systemctl enable postgresql  

AlmaLinux/RHEL/CentOS

# Установка PostgreSQL  
sudo dnf install postgresql-server postgresql-contrib  

# Инициализация БД  
sudo postgresql-setup --initdb  

# Запуск службы  
sudo systemctl start postgresql  

# Включение автозапуска  
sudo systemctl enable postgresql  

2. Подключение и настройка

Вход в консоль PostgreSQL

sudo -u postgres psql  # Linux  
psql -U postgres       # Если настроен пароль  

Создание пользователя и БД

-- Создание пользователя  
CREATE USER myuser WITH PASSWORD 'mypassword';  

-- Создание базы данных  
CREATE DATABASE mydb OWNER myuser;  

-- Выдача прав  
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;  

-- Выход  
\q  

Подключение к БД

psql -U myuser -d mydb -h localhost -W  

3. Управление базами данных

Основные команды

-- Показать все БД  
\l  

-- Переключиться на БД  
\c dbname  

-- Создать БД  
CREATE DATABASE dbname;  

-- Удалить БД  
DROP DATABASE dbname;  

4. Управление таблицами

Создание и изменение таблиц

-- Создание таблицы  
CREATE TABLE users (  
    id SERIAL PRIMARY KEY,  
    name VARCHAR(50) NOT NULL,  
    email VARCHAR(100) UNIQUE,  
    created_at TIMESTAMP DEFAULT NOW()  
);  

-- Просмотр таблиц  
\dt  

-- Просмотр структуры таблицы  
\d users  

-- Добавление столбца  
ALTER TABLE users ADD COLUMN age INT;  

-- Удаление таблицы  
DROP TABLE users;  

5. Работа с данными

Вставка, обновление, удаление

-- Вставка данных  
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');  

-- Обновление данных  
UPDATE users SET email = 'new@example.com' WHERE id = 1;  

-- Удаление данных  
DELETE FROM users WHERE id = 1;  

-- Выборка данных  
SELECT * FROM users;  
SELECT name, email FROM users WHERE age > 18;  

6. Индексы и оптимизация

Создание и удаление индексов

-- Создать индекс  
CREATE INDEX idx_users_email ON users(email);  

-- Удалить индекс  
DROP INDEX idx_users_email;  

-- Полнотекстовый поиск (если нужно)  
CREATE EXTENSION pg_trgm;  
CREATE INDEX idx_users_name_search ON users USING gin(name gin_trgm_ops);  

7. Резервное копирование и восстановление

Экспорт и импорт БД

# Дамп всей БД  
pg_dump -U myuser -d mydb -f backup.sql  

# Дамп одной таблицы  
pg_dump -U myuser -d mydb -t users -f users_backup.sql  

# Восстановление БД  
psql -U myuser -d mydb -f backup.sql  

8. Расширенные возможности

Транзакции

BEGIN;  
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;  
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;  
COMMIT;  -- или ROLLBACK в случае ошибки  

Представления (Views)

CREATE VIEW active_users AS  
SELECT * FROM users WHERE last_login > NOW() - INTERVAL '30 days';  

Хранимые процедуры

CREATE OR REPLACE FUNCTION add_user(name TEXT, email TEXT)  
RETURNS VOID AS $$  
BEGIN  
    INSERT INTO users (name, email) VALUES (name, email);  
END;  
$$ LANGUAGE plpgsql;  

-- Вызов  
SELECT add_user('Bob', 'bob@example.com');  

9. Внешние источники данных

Импорт из CSV

COPY users(name, email) FROM '/path/to/users.csv' DELIMITER ',' CSV HEADER;  

Экспорт в CSV

COPY users TO '/path/to/users_export.csv' DELIMITER ',' CSV HEADER;  

Заключение

Этот гайд охватывает основные команды PostgreSQL для администрирования, разработки и анализа данных. Для более сложных сценариев обратитесь к официальной документации.

🚀 Совет: Используйте pgAdmin (графический интерфейс) для удобного управления PostgreSQL.