Шпаргалка по PostgreSQL
Полный справочник команд и особенностей PostgreSQL для быстрого поиска.
Типы данных PostgreSQL
Числовые типы
| Тип |
Размер |
Диапазон |
Описание |
SMALLINT / INT2 |
2 байта |
-32,768 to 32,767 |
Малое целое |
INTEGER / INT / INT4 |
4 байта |
-2,147,483,648 to 2,147,483,647 |
Целое |
BIGINT / INT8 |
8 байтов |
Очень большой диапазон |
Большое целое |
SERIAL |
4 байта |
Автоинкремент |
Последовательность |
BIGSERIAL |
8 байтов |
Автоинкремент |
Большая последовательность |
REAL / FLOAT4 |
4 байта |
~6 знаков |
Число с плавающей точкой |
DOUBLE PRECISION / FLOAT8 |
8 байтов |
~15 знаков |
Число с плавающей точкой |
NUMERIC(M,D) / DECIMAL |
Переменный |
Точное значение |
Точное число |
Строковые типы
| Тип |
Описание |
Макс размер |
CHAR(N) |
Фиксированная длина |
1 GB |
VARCHAR(N) |
Переменная длина с лимитом |
1 GB |
TEXT |
Переменная длина без лимита |
1 GB |
"char" |
Один символ |
1 байт |
NAME |
Для имен объектов |
64 байта |
Типы даты и времени
| Тип |
Размер |
Диапазон |
Точность |
TIMESTAMP |
8 байтов |
4713 BC to 5874897 AD |
1 микросекунда |
TIMESTAMPTZ |
8 байтов |
С часовым поясом |
1 микросекунда |
DATE |
4 байта |
4713 BC to 5874897 AD |
1 день |
TIME |
8 байтов |
00:00:00 to 24:00:00 |
1 микросекунда |
TIMETZ |
12 байтов |
С часовым поясом |
1 микросекунда |
INTERVAL |
16 байтов |
-178,000,000 to 178,000,000 лет |
1 микросекунда |
Булевы и битовые типы
-- BOOLEAN
CREATE TABLE flags (
is_active BOOLEAN, -- TRUE, FALSE, NULL
is_deleted BOOL -- алиас
);
-- BIT
CREATE TABLE bitfields (
flags BIT(8), -- фиксированная длина
varflags BIT VARYING(8) -- переменная длина
);
JSON типы
CREATE TABLE data (
id INT,
raw_json JSON, -- текст JSON (быстрее вставка)
parsed_json JSONB -- бинарный JSON (быстрее запросы, поддерживает индексы)
);
-- Вставка
INSERT INTO data VALUES (1, '{"key": "value"}'::jsonb);
-- Query JSONB
SELECT parsed_json->>'key' FROM data WHERE id = 1;
SELECT * FROM data WHERE parsed_json @> '{"key": "value"}';
Массивы
-- Одномерный массив
CREATE TABLE tags (
id INT,
tags TEXT[]
);
-- Многомерный массив
CREATE TABLE matrix (
id INT,
grid INT[][]
);
-- Вставка
INSERT INTO tags VALUES (1, ARRAY['tag1', 'tag2']);
INSERT INTO tags VALUES (2, '{"tag3", "tag4"}');
-- Query
SELECT * FROM tags WHERE 'tag1' = ANY(tags);
SELECT * FROM tags WHERE tags @> ARRAY['tag1'];
Специальные типы
| Тип |
Описание |
UUID |
Универсальный уникальный идентификатор |
XML |
XML данные |
INET |
IPv4/IPv6 адреса |
CIDR |
IPv4/IPv6 сети |
MACADDR |
MAC адреса |
TSVECTOR |
Для полнотекстового поиска |
TSQUERY |
Запрос полнотекстового поиска |
POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE |
Геометрические типы |
PG_LSN |
Log Sequence Number для репликации |
Специфичные команды PostgreSQL
Управление схемами
-- Создание схемы
CREATE SCHEMA myschema;
-- Установка пути поиска
SET search_path TO myschema, public;
-- Просмотр схем
\dn
-- Удаление схемы
DROP SCHEMA IF EXISTS myschema CASCADE;
Управление таблицами
-- Создание таблицы
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Изменение таблицы
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
ALTER TABLE users ALTER COLUMN email SET NOT NULL;
ALTER TABLE users DROP COLUMN phone;
ALTER TABLE users RENAME TO accounts;
-- Удаление таблицы
DROP TABLE IF EXISTS users CASCADE;
-- Усечение таблицы (быстрое удаление всех данных)
TRUNCATE TABLE users RESTART IDENTITY;
Ограничения (Constraints)
-- PRIMARY KEY
CREATE TABLE pk_example (
id INT PRIMARY KEY
);
-- FOREIGN KEY
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT REFERENCES users(id) ON DELETE CASCADE
);
-- UNIQUE
CREATE TABLE unique_example (
id INT,
email TEXT UNIQUE
);
-- CHECK
CREATE TABLE check_example (
id INT,
age INT CHECK (age >= 18),
status TEXT CHECK (status IN ('active', 'inactive'))
);
-- NOT NULL
CREATE TABLE notnull_example (
id INT NOT NULL
);
-- EXCLUSION (PostgreSQL специфика)
CREATE TABLE ranges (
id INT,
period TSRANGE,
EXCLUDE USING GIST (period WITH &&)
);
Работа с последовательностями
-- Создание последовательности
CREATE SEQUENCE myseq START WITH 1 INCREMENT BY 1;
-- Использование
SELECT nextval('myseq');
SELECT currval('myseq');
SELECT setval('myseq', 100);
-- Сброс последовательности
ALTER SEQUENCE myseq RESTART WITH 1;
-- Удаление
DROP SEQUENCE IF EXISTS myseq;
Функции PostgreSQL
Строковые функции
| Функция |
Описание |
Пример |
Результат |
CONCAT(a,b,...) |
Конкатенация |
CONCAT('Hello', ' ', 'World') |
'Hello World' |
SUBSTRING(str, start, len) |
Подстрока |
SUBSTRING('PostgreSQL', 1, 4) |
'Post' |
LENGTH(str) |
Длина |
LENGTH('привет') |
12 |
CHAR_LENGTH(str) |
Длина в символах |
CHAR_LENGTH('привет') |
6 |
UPPER(str) |
Верхний регистр |
UPPER('postgresql') |
'POSTGRESQL' |
LOWER(str) |
Нижний регистр |
LOWER('POSTGRESQL') |
'postgresql' |
TRIM(str) |
Удаление пробелов |
TRIM(' test ') |
'test' |
REPLACE(str, from, to) |
Замена |
REPLACE('aabb', 'a', 'x') |
'xxbb' |
POSITION(sub IN str) |
Позиция |
POSITION('ll' IN 'hello') |
3 |
LPAD(str, len, pad) |
Левое дополнение |
LPAD('5', 3, '0') |
'005' |
RPAD(str, len, pad) |
Правое дополнение |
RPAD('5', 3, '0') |
'500' |
SPLIT_PART(str, delim, n) |
Разделение |
SPLIT_PART('a,b,c', ',', 2) |
'b' |
REGEXP_MATCHES(str, pattern) |
RegExp |
REGEXP_MATCHES('abc123', '\d+') |
{123} |
STRING_AGG(expr, delim) |
Агрегация строк |
STRING_AGG(name, ', ') |
'A, B, C' |
Числовые функции
| Функция |
Описание |
Пример |
Результат |
ABS(x) |
Модуль |
ABS(-5) |
5 |
CEIL(x) / CEILING(x) |
Округление вверх |
CEIL(4.2) |
5 |
FLOOR(x) |
Округление вниз |
FLOOR(4.8) |
4 |
ROUND(x, d) |
Округление |
ROUND(4.567, 2) |
4.57 |
TRUNC(x, d) |
Отсечение |
TRUNC(4.567, 2) |
4.56 |
MOD(a, b) |
Остаток |
MOD(10, 3) |
1 |
RANDOM() |
Случайное число |
RANDOM() |
0.xxxxx |
POWER(x, y) |
Степень |
POWER(2, 3) |
8 |
SQRT(x) |
Квадратный корень |
SQRT(16) |
4 |
CBRT(x) |
Кубический корень |
CBRT(27) |
3 |
FACTORIAL(n) |
Факториал |
FACTORIAL(5) |
120 |
GCD(a, b) |
НОД |
GCD(12, 8) |
4 |
LCM(a, b) |
НОК |
LCM(12, 8) |
24 |
Функции даты и времени
| Функция |
Описание |
Пример |
Результат |
NOW() |
Текущие дата и время |
NOW() |
timestamp with time zone |
CURRENT_TIMESTAMP |
Текущая метка времени |
CURRENT_TIMESTAMP |
timestamptz |
CURRENT_DATE |
Текущая дата |
CURRENT_DATE |
date |
CURRENT_TIME |
Текущее время |
CURRENT_TIME |
time with time zone |
AGE(timestamp) |
Разница от сейчас |
AGE('2020-01-01') |
interval |
AGE(t1, t2) |
Разница между датами |
AGE('2024-01-20', '2024-01-15') |
5 days |
DATE_TRUNC(part, ts) |
Усечение даты |
DATE_TRUNC('month', NOW()) |
начало месяца |
DATE_PART(part, ts) |
Извлечение части |
DATE_PART('year', NOW()) |
2024 |
EXTRACT(part FROM ts) |
Извлечение |
EXTRACT(MONTH FROM NOW()) |
1 |
TO_CHAR(ts, fmt) |
Форматирование |
TO_CHAR(NOW(), 'DD.MM.YYYY') |
'15.01.2024' |
TO_DATE(str, fmt) |
Парсинг даты |
TO_DATE('15.01.2024', 'DD.MM.YYYY') |
date |
TO_TIMESTAMP(str, fmt) |
Парсинг timestamp |
TO_TIMESTAMP(...) |
timestamp |
MAKE_DATE(y, m, d) |
Создание даты |
MAKE_DATE(2024, 1, 15) |
date |
MAKE_TIMESTAMP(...) |
Создание timestamp |
MAKE_TIMESTAMP(2024, 1, 15, 10, 30, 0) |
timestamp |
GENERATE_SERIES(start, end, step) |
Генерация серии |
GENERATE_SERIES(1, 5, 1) |
1,2,3,4,5 |
Форматы даты:
- YYYY — год (4 цифры)
- YY — год (2 цифры)
- MM — месяц (01-12)
- DD — день (01-31)
- HH24 — часы (00-23)
- HH12 — часы (01-12)
- MI — минуты (00-59)
- SS — секунды (00-59)
- MS — миллисекунды (000-999)
- US — микросекунды (000000-999999)
- Day — день недели (полный)
- Mon — месяц (сокращённый)
Агрегатные функции
| Функция |
Описание |
COUNT(*) |
Количество строк |
COUNT(column) |
Количество непустых значений |
SUM(column) |
Сумма |
AVG(column) |
Среднее |
MIN(column) |
Минимум |
MAX(column) |
Максимум |
STRING_AGG(expr, delim) |
Конкатенация строк |
ARRAY_AGG(expr) |
Агрегация в массив |
JSON_AGG(expr) |
Агрегация в JSON |
JSONB_AGG(expr) |
Агрегация в JSONB |
JSON_OBJECT_AGG(key, value) |
Агрегация в JSON объект |
BOOL_AND(expr) |
Логическое И |
BOOL_OR(expr) |
Логическое ИЛИ |
EVERY(expr) |
Алиас для BOOL_AND |
STDDEV(column) |
Стандартное отклонение |
VARIANCE(column) |
Дисперсия |
CORR(x, y) |
Корреляция |
COVAR_POP(x, y) |
Ковариация |
Оконные функции
-- ROW_NUMBER
SELECT name, score, ROW_NUMBER() OVER (ORDER BY score DESC) as rank
FROM students;
-- RANK и DENSE_RANK
SELECT name, score,
RANK() OVER (ORDER BY score DESC) as rank,
DENSE_RANK() OVER (ORDER BY score DESC) as dense_rank
FROM students;
-- NTILE
SELECT name, score, NTILE(4) OVER (ORDER BY score DESC) as quartile
FROM students;
-- LAG и LEAD
SELECT date, value,
LAG(value, 1) OVER (ORDER BY date) as prev_value,
LEAD(value, 1) OVER (ORDER BY date) as next_value
FROM metrics;
-- FIRST_VALUE и LAST_VALUE
SELECT date, value,
FIRST_VALUE(value) OVER (ORDER BY date) as first,
LAST_VALUE(value) OVER (ORDER BY date
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as last
FROM metrics;
-- NTH_VALUE
SELECT name, score, NTH_VALUE(score, 2) OVER (ORDER BY score DESC) as second_score
FROM students;
-- Накопительная сумма
SELECT date, sales,
SUM(sales) OVER (ORDER BY date) as running_total
FROM daily_sales;
-- Скользящее среднее
SELECT date, sales,
AVG(sales) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as moving_avg
FROM daily_sales;
-- Partition By
SELECT department, employee, salary,
AVG(salary) OVER (PARTITION BY department) as dept_avg,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) as dept_rank
FROM employees;
-- Frame clauses
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
ROWS BETWEEN 3 PRECEDING AND CURRENT ROW
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
RANGE BETWEEN INTERVAL '1 day' PRECEDING AND CURRENT ROW
Управление транзакциями
-- Начало транзакции
BEGIN;
START TRANSACTION;
-- Точки сохранения
SAVEPOINT sp1;
-- Откат до точки сохранения
ROLLBACK TO sp1;
-- Полный откат
ROLLBACK;
-- Фиксация
COMMIT;
COMMIT WORK;
-- Установка уровня изоляции
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- ReadOnly транзакция
SET TRANSACTION READ ONLY;
Уровни изоляции PostgreSQL:
- READ UNCOMMITTED (синоним READ COMMITTED)
- READ COMMITTED (по умолчанию)
- REPEATABLE READ
- SERIALIZABLE
Конфликты и блокировки
-- Просмотр блокировок
SELECT * FROM pg_locks;
-- Просмотр ожидающих запросов
SELECT * FROM pg_stat_activity WHERE wait_event_type = 'Lock';
-- Убийство блокирующего процесса
SELECT pg_terminate_backend(pid);
-- Advisory locks (советующие блокировки)
SELECT pg_advisory_lock(123);
SELECT pg_advisory_unlock(123);
SELECT pg_try_advisory_lock(123);
Переменные и параметры
-- Пользовательские переменные через SET
SET myapp.user_id = 123;
SELECT current_setting('myapp.user_id');
-- Системные параметры
SHOW ALL;
SHOW max_connections;
SET work_mem = '64MB';
SET SESSION statement_timeout = '30s';
-- Конфигурация на уровне сессии
SET LOCAL work_mem = '128MB'; -- только в рамках транзакции
EXPLAIN и оптимизация
-- Анализ плана выполнения
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
-- Расширенный анализ с выполнением
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';
-- С буферами
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM users WHERE email = 'test@example.com';
-- С cost settings
EXPLAIN (ANALYZE, COSTS, VERBOSE, SETTINGS, BUFFERS, WAL, TIMING)
SELECT * FROM users WHERE email = 'test@example.com';
-- JSON формат
EXPLAIN (FORMAT JSON) SELECT * FROM users WHERE email = 'test@example.com';
-- YAML формат
EXPLAIN (FORMAT YAML) SELECT * FROM users WHERE email = 'test@example.com';
Типы сканирования:
- Seq Scan — полное сканирование таблицы
- Index Scan — сканирование по индексу с доступом к таблице
- Index Only Scan — только индекс (без доступа к таблице)
- Bitmap Index Scan + Bitmap Heap Scan — битовая карта индексов
Типы JOIN:
- Nested Loop — вложенные циклы (хорошо для маленьких таблиц)
- Hash Join — хэш соединение (хорошо для больших таблиц)
- Merge Join — сортировка + слияние (для отсортированных данных)
Системные каталоги и представления
-- Информация о базах данных
SELECT * FROM pg_database;
-- Информация о таблицах
SELECT * FROM pg_tables WHERE schemaname = 'public';
-- Информация о колонках
SELECT * FROM information_schema.columns WHERE table_name = 'users';
-- Индексы
SELECT * FROM pg_indexes WHERE tablename = 'users';
-- Внешние ключи
SELECT * FROM information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY';
-- Зависимости
SELECT * FROM pg_depend;
-- Статистика
SELECT * FROM pg_stat_user_tables;
SELECT * FROM pg_stat_user_indexes;
-- Размер объектов
SELECT pg_size_pretty(pg_total_relation_size('users'));
SELECT pg_size_pretty(pg_database_size(current_database()));
Хранимые процедуры и функции
-- Создание функции (PL/pgSQL)
CREATE OR REPLACE FUNCTION get_user(user_id INT)
RETURNS TABLE(id INT, username TEXT, email TEXT) AS $$
BEGIN
RETURN QUERY
SELECT u.id, u.username, u.email
FROM users u
WHERE u.id = user_id;
END;
$$ LANGUAGE plpgsql;
-- Вызов функции
SELECT * FROM get_user(1);
-- Функция с OUT параметрами
CREATE OR REPLACE FUNCTION get_stats(
IN user_id INT,
OUT total_orders INT,
OUT total_amount NUMERIC
) AS $$
BEGIN
SELECT COUNT(*), SUM(amount)
INTO total_orders, total_amount
FROM orders
WHERE user_id = $1;
END;
$$ LANGUAGE plpgsql;
-- Процедура (PostgreSQL 11+)
CREATE OR REPLACE PROCEDURE transfer_funds(
from_account INT,
to_account INT,
amount NUMERIC
) AS $$
BEGIN
UPDATE accounts SET balance = balance - amount WHERE id = from_account;
UPDATE accounts SET balance = balance + amount WHERE id = to_account;
END;
$$ LANGUAGE plpgsql;
CALL transfer_funds(1, 2, 100);
-- Триггерная функция
CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Создание триггера
CREATE TRIGGER update_users_modtime
BEFORE UPDATE ON users
FOR EACH ROW
EXECUTE FUNCTION update_modified_column();
-- Удаление
DROP FUNCTION IF EXISTS get_user(INT);
DROP PROCEDURE IF EXISTS transfer_funds(INT, INT, NUMERIC);
DROP TRIGGER IF EXISTS update_users_modtime ON users;
Полнотекстовый поиск
-- Базовый поиск
SELECT * FROM articles
WHERE to_tsvector('russian', title || ' ' || body) @@ to_tsquery('russian', 'база & данных');
-- С использованием столбца tsvector
ALTER TABLE articles ADD COLUMN search_vector TSVECTOR;
UPDATE articles SET search_vector = to_tsvector('russian', title || ' ' || body);
CREATE INDEX idx_search ON articles USING GIN(search_vector);
-- Поиск
SELECT * FROM articles WHERE search_vector @@ to_tsquery('russian', 'база & данных');
-- Ранжирование
SELECT title, ts_rank(search_vector, query) as rank
FROM articles, to_tsquery('russian', 'база & данных') query
WHERE search_vector @@ query
ORDER BY rank DESC;
-- Подсветка результатов
SELECT ts_headline('russian', body, to_tsquery('russian', 'база'), 'StartSel=<b>, StopSel=</b>')
FROM articles WHERE search_vector @@ to_tsquery('russian', 'база');
-- Синонимы и словари
SELECT to_tsvector('russian', 'бежит') @@ to_tsquery('russian', 'бежать');
Работа с JSONB
-- Создание
SELECT '{"name": "John", "age": 30}'::jsonb;
SELECT jsonb_build_object('name', 'John', 'age', 30);
SELECT jsonb_build_array(1, 2, 3);
-- Извлечение
SELECT data->'name' FROM table; -- JSONB
SELECT data->>'name' FROM table; -- TEXT
SELECT data#>'{address,city}' FROM table; -- вложенный
SELECT data#>>'{address,city}' FROM table;
-- Проверка существования
SELECT * FROM table WHERE data ? 'name';
SELECT * FROM table WHERE data ?| ARRAY['name', 'age'];
SELECT * FROM table WHERE data ?& ARRAY['name', 'age'];
-- Поиск по значению
SELECT * FROM table WHERE data @> '{"age": 30}';
SELECT * FROM table WHERE data->>'name' = 'John';
-- Обновление
UPDATE table SET data = jsonb_set(data, '{age}', '31');
UPDATE table SET data = data || '{"city": "Moscow"}'::jsonb;
UPDATE table SET data = data - 'temp_field';
-- Агрегация
SELECT jsonb_agg(name) FROM users;
SELECT jsonb_object_agg(id, name) FROM users;
Репликация
-- Настройка standby
-- postgresql.conf на master:
wal_level = replica
max_wal_senders = 3
wal_keep_size = 64
-- pg_hba.conf на master:
host replication replicator 192.168.1.0/24 scram-sha-256
-- Создание пользователя репликации
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'password';
-- Бэкап для standby
pg_basebackup -h master -D /var/lib/postgresql/data -U replicator -P -X stream
-- Проверка статуса репликации
SELECT * FROM pg_stat_replication;
-- Переключение на standby
SELECT pg_promote();
-- Создание слота репликации
SELECT pg_create_physical_replication_slot('standby_slot');
Секционирование таблиц
-- Декларативное секционирование (PostgreSQL 10+)
CREATE TABLE logs (
id INT,
log_date DATE NOT NULL,
message TEXT
) PARTITION BY RANGE (log_date);
-- Создание партиций
CREATE TABLE logs_2024_q1 PARTITION OF logs
FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
CREATE TABLE logs_2024_q2 PARTITION OF logs
FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');
-- Секционирование по списку
CREATE TABLE users_by_country (
id INT,
country TEXT NOT NULL
) PARTITION BY LIST (country);
CREATE TABLE users_ru PARTITION OF users_by_country
FOR VALUES IN ('RU');
CREATE TABLE users_us PARTITION OF users_by_country
FOR VALUES IN ('US');
-- Просмотр партиций
SELECT * FROM pg_partitioned_table;
Полезные расширения
-- pg_stat_statements (статистика запросов)
CREATE EXTENSION pg_stat_statements;
SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;
-- uuid-ossp (генерация UUID)
CREATE EXTENSION uuid-ossp;
SELECT uuid_generate_v4();
-- hstore (ключ-значение)
CREATE EXTENSION hstore;
SELECT 'name => John, age => 30'::hstore;
-- pg_trgm (триграммы для нечёткого поиска)
CREATE EXTENSION pg_trgm;
CREATE INDEX idx_name_trgm ON users USING GIN (name gin_trgm_ops);
SELECT * FROM users WHERE name % 'Jon'; -- похоже на 'Jon'
SELECT similarity('John', 'Jon'); -- 0.75
-- citext (регистронезависимый текст)
CREATE EXTENSION citext;
CREATE TABLE users (email CITEXT UNIQUE);
-- btree_gin (B-tree операторы в GIN)
CREATE EXTENSION btree_gin;
-- postgis (геоданные)
CREATE EXTENSION postgis;
Утилиты командной строки
| Утилита |
Описание |
psql |
Интерактивный терминал |
pg_dump |
Экспорт базы |
pg_dumpall |
Экспорт всех баз |
pg_restore |
Восстановление из бэкапа |
pg_basebackup |
Физический бэкап |
pgbench |
Бенчмарк производительности |
createdb |
Создание базы |
createuser |
Создание пользователя |
dropdb |
Удаление базы |
dropuser |
Удаление пользователя |
pg_isready |
Проверка готовности сервера |
pg_ctl |
Управление сервером |
initdb |
Инициализация кластера |
vacuumlo |
Удаление orphaned large objects |
pg_rewind |
Синхронизация после failover |
Назад: Установка и настройка PostgreSQL
Далее: Справочник SQL команд