Если вы работаете с базами данных, то знаете, как много времени занимает написание сложных запросов, отладка производительности и проектирование схем. Но что, если я скажу, что 70% этой рутины можно автоматизировать с помощью промтов для ChatGPT? В этой статье я собрал 25 проверенных промтов, которые реально экономят часы работы. Вы узнаете, как генерировать сложные JOIN-запросы, находить узкие места в производительности, проектировать нормализованные схемы и даже автоматизировать миграции. Каждый промт сопровождается реальным примером использования — берите и применяйте.
1. Базовые промты: написание запросов
Промт 1: Сгенерировать SELECT-запрос с JOIN
Задача: Быстро получить объединённые данные из нескольких таблиц.
Промт: «Напиши SQL-запрос для PostgreSQL, который выводит имена клиентов и их заказы. Таблицы: customers (id, name), orders (id, customer_id, amount, order_date). Нужны только заказы за последний месяц, отсортированные по дате».
Пример результата:
SELECT c.name, o.amount, o.order_date
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.order_date >= CURRENT_DATE - INTERVAL '1 month'
ORDER BY o.order_date DESC;
Промт 2: Объяснить сложный запрос
Задача: Понять, что делает чужой SQL.
Промт: «Объясни по шагам, что выполняет этот запрос: SELECT department_id, AVG(salary) FROM employees WHERE hire_date > '2020-01-01' GROUP BY department_id HAVING AVG(salary) > 50000;»
Пример результата: ChatGPT разберёт каждую часть: фильтрация по дате, группировка, агрегация, условие HAVING — и объяснит, почему HAVING нельзя заменить на WHERE.
Промт 3: Переписать запрос для MySQL
Задача: Адаптировать PostgreSQL-запрос для MySQL (синтаксис отличается).
Промт: «Перепиши этот PostgreSQL-запрос для MySQL, учитывая отличия в LIMIT и кавычках: SELECT * FROM products WHERE price > 100 ORDER BY created_at DESC LIMIT 5 OFFSET 10;»
Пример результата: MySQL поддерживает LIMIT 5 OFFSET 10, но кавычки для строк должны быть одинарными. ChatGPT учтёт это и даст рабочий вариант.
2. Продвинутые промты: оптимизация производительности
Промт 4: Найти медленные запросы
Задача: Выявить запросы, которые тормозят систему.
Промт: «Составь запрос к таблице pg_stat_statements (PostgreSQL), который покажет топ-10 самых медленных запросов по среднему времени выполнения, с учётом частоты вызовов».
Пример результата:
SELECT query, calls, mean_exec_time, max_exec_time
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;
Промт 5: Проанализировать план выполнения
Задача: Понять, как БД выполняет запрос.
Промт: «Объясни, что означает "Seq Scan" и "Index Scan" в EXPLAIN ANALYZE. Приведи пример, когда один выгоднее другого».
Пример результата: ChatGPT объяснит, что Seq Scan — полное сканирование таблицы, а Index Scan — по индексу. Для таблицы на 10 млн строк выборка 1% записей быстрее через индекс, а 50% — через Seq Scan.
Промт 6: Создать недостающие индексы
Задача: Сгенерировать CREATE INDEX для ускорения запросов.
Промт: «Для таблицы orders (customer_id, order_date, status) предложи индексы, которые ускорят запрос: SELECT * FROM orders WHERE customer_id = 123 AND order_date > '2025-01-01'».
Пример результата: ChatGPT предложит составной индекс: CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);
3. Экспертные промты: проектирование схем
Промт 7: Нормализация до 3НФ
Задача: Привести схему к третьей нормальной форме.
Промт: «У меня есть таблица: orders (id, customer_name, customer_email, product_name, product_price, order_date). Приведи её к 3НФ, объясни шаги».
Пример результата: ChatGPT выделит сущности: customers, products, orders, order_items — и покажет связи.
Промт 8: Денормализация для аналитики
Задача: Спроектировать схему для OLAP.
Промт: «Спроектируй схему типа "звезда" для анализа продаж: измерения — время, продукт, магазин; факты — сумма продаж. Покажи DDL для PostgreSQL».
Пример результата: ChatGPT создаст таблицы dim_time, dim_product, dim_store, fact_sales с внешними ключами.
Промт 9: Миграция схемы
Задача: Написать миграцию для добавления поля.
Промт: «Напиши SQL для миграции в PostgreSQL: добавить колонку phone VARCHAR(20) в таблицу customers, с проверкой на существование».
Пример результата:
ALTER TABLE customers ADD COLUMN IF NOT EXISTS phone VARCHAR(20);
4. Промты для анализа данных
Промт 10: Агрегация и группировка
Задача: Получить итоги по категориям.
Промт: «Напиши запрос: средний чек по каждому магазину за 2025 год. Таблицы: sales (store_id, amount, sale_date), stores (id, name)».
Пример результата:
SELECT s.name, AVG(sl.amount) AS avg_check
FROM sales sl
JOIN stores s ON sl.store_id = s.id
WHERE EXTRACT(YEAR FROM sl.sale_date) = 2025
GROUP BY s.name;
Промт 11: Оконные функции
Задача: Ранжирование и скользящие средние.
Промт: «Покажи, как с помощью ROW_NUMBER() выбрать последний заказ каждого клиента в PostgreSQL».
Пример результата:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) AS rn
FROM orders
) t WHERE rn = 1;
Промт 12: Аномалии в данных
Задача: Найти выбросы.
Промт: «Напиши запрос для поиска заказов с суммой, превышающей среднюю на 3 стандартных отклонения (в PostgreSQL)».
Пример результата: Использование STDDEV() и AVG() в подзапросе.
5. Промты для администрирования
Промт 13: Бэкап и восстановление
Задача: Сгенерировать команды для pg_dump.
Промт: «Как сделать резервную копию базы данных PostgreSQL и восстановить её? Дай команды для pg_dump и psql».
Пример результата:
pg_dump -U username -h localhost dbname > backup.sql
psql -U username -h localhost dbname < backup.sql
Промт 14: Мониторинг соединений
Задача: Проверить активные подключения.
Промт: «Напиши SQL-запрос для PostgreSQL, который показывает активные сессии и их состояние».
Пример результата:
SELECT pid, usename, application_name, state, query
FROM pg_stat_activity
WHERE state = 'active';
Промт 15: Управление пользователями
Задача: Создать пользователя с правами.
Промт: «Создай пользователя для аналитика, который может только SELECT из таблиц схемы public в PostgreSQL».
Пример результата:
CREATE USER analyst WITH PASSWORD 'securepass';
GRANT USAGE ON SCHEMA public TO analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst;
6. Промты для отладки и решения проблем
Промт 16: Исправить ошибку синтаксиса
Задача: Найти и исправить ошибку.
Промт: «Вот запрос, он выдаёт ошибку: SELECT * FORM users WHERE id=1;. Исправь и объясни».
Пример результата: ChatGPT исправит FORM на FROM и объяснит, что это типичная опечатка.
Промт 17: Оптимизировать медленный запрос
Задача: Ускорить запрос.
Промт: «Этот запрос работает 10 секунд. Как его оптимизировать? SELECT * FROM logs WHERE created_at > '2025-01-01' ORDER BY created_at DESC;»
Пример результата: ChatGPT предложит добавить индекс на created_at, использовать LIMIT, и избегать SELECT *.
7. Промты для генерации тестовых данных
Промт 18: Сгенерировать INSERT-запросы
Задача: Наполнить таблицу тестовыми данными.
Промт: «Сгенерируй 100 INSERT-запросов для таблицы users (name, email, created_at) с реалистичными данными».
Пример результата: ChatGPT выдаст INSERT с разными именами и email.
Промт 19: Создать процедуру генерации
Задача: Написать хранимую процедуру для генерации данных.
Промт: «Напиши процедуру на PL/pgSQL, которая заполняет таблицу products (name, price) случайными данными».
Пример результата: Использование цикла и random().
8. Промты для документации и командной работы
Промт 20: Сгенерировать документацию по схеме
Задача: Описать таблицы и связи.
Промт: «Опиши схему БД для проекта интернет-магазина: таблицы customers, orders, products, order_items. Для каждой таблицы укажи назначение и основные поля».
Пример результата: ChatGPT создаст структурированное описание, готовое для README.
Промт 21: Написать комментарии к запросу
Задача: Добавить пояснения.
Промт: «Добавь комментарии к этому SQL-запросу: SELECT ... FROM ... WHERE ...».
Пример результата: Каждая строка будет прокомментирована.
9. Промты для обучения и проверки знаний
Промт 22: Создать тест по SQL
Задача: Сгенерировать вопросы.
Промт: «Составь 10 вопросов с вариантами ответов по теме JOIN в SQL, уровень — средний».
Пример результата: ChatGPT выдаст вопросы с ответами и пояснениями.
Промт 23: Объяснить разницу между SQL и NoSQL
Задача: Получить сравнительный анализ.
Промт: «Сравни реляционные БД и NoSQL по критериям: масштабируемость, согласованность, гибкость схемы. Приведи примеры использования».
Пример результата: Структурированное сравнение с примерами.
10. Промты для конкретных задач
Промт 24: Поиск дубликатов
Задача: Найти повторяющиеся записи.
Промт: «Напиши запрос для поиска дубликатов email в таблице users».
Пример результата:
SELECT email, COUNT(*) FROM users GROUP BY email HAVING COUNT(*) > 1;
Промт 25: Обновление данных с подзапросом
Задача: Обновить записи на основе другой таблицы.
Промт: «Напиши UPDATE, который устанавливает статус 'gold' для клиентов с суммой заказов > 10000».
Пример результата: UPDATE customers SET status = 'gold' WHERE id IN (SELECT customer_id FROM orders GROUP BY customer_id HAVING SUM(amount) > 10000);
Итоги
Эти 25 промтов покрывают основные задачи, с которыми сталкивается каждый, кто работает с базами данных. Используйте их как отправную точку, адаптируйте под свои проекты и не забывайте проверять результаты. А если хотите систематизировать знания — загляните в наш блог, там много полезного. Надеюсь, эта подборка сэкономит вам часы работы и сделает вас чуточку продуктивнее. Сохраняйте статью в закладки, делитесь с коллегами и пишите в комментариях, какие промты используете вы!
Комментарии