В статье GigaChat разберем способы применения ИИ-инструментов для работы с SQL и ошибки, которые часто допускают генераторы.
Как ГигаЧат помогает писать SQL-запросы
ГигаЧат работает бесплатно и отлично понимает промпты на русском языке. Он умеет генерировать тексты и изображения, а также код на разных языках программирования, например, на Python, JavaScript и SQL.
Генерация SQL-запросов по описанию задачи
Чтобы ГигаЧат сгенерировал правильный запрос, важно передать ему все вводные:
- Названия таблиц и полей. Это главная часть промпта — если упустить ее, AI-генератор будет угадывать наименования и выдаст результат, который нужно корректировать.
- Кратко описать задачу. Например, «найти всех клиентов, сделавших более 3 заказов за последние 30 дней».
- Вид СУБД: MySQL, PostgreSQL, SQL Server, MongoDB, Cassandra и другие.
- Формат ответа: только запрос, объяснение каждой строки, дополнение кода комментариями.
Попробуем ввести такой промпт: «Сгенерируй SQL-запрос для базы данных интернет-магазина (PostgreSQL). Таблицы и поля: orders(id, user_id, order_date, total_amount), users(id, country, registration_date). Нужно получить топ-10 стран по сумме заказов за последние 30 дней, отсортировать их по выручке по убыванию. Объясни код, который ты напишешь».
Результат:

Если нужно внести изменения в код, сделайте это с помощью кнопки «Доработать текст», которая появляется под каждым ответом ГигаЧата. По клику откроется редактор с множеством функций, включая подсветку синтаксиса SQL.
Исправление ошибок и оптимизация кода
Нейросеть также может помочь с поиском ошибок — для этого достаточно приложить код и попросить ГигаЧат проанализировать его. Если вы предполагаете конкретную ошибку, лучше описать ее, чтобы сервис сразу предложил исправления.
Например, попробуем отправить ИИ-генератору такой промпт:
«Сделай анализ этого кода:
SELECT u.country,
SUM(o.total_amount) AS total_revenue
FROM orders o
JOIN users u ON o.user_id = u.id
WHERE u.registration_date >= CURRENT_DATE — INTERVAL ’30 days’
GROUP BY u.country
ORDER BY total_revenue DESC
LIMIT 10;
Укажи на ошибки, если они есть, а также предложи варианты исправлений. Задача SQL-запроса: получить топ-10 стран по сумме заказов за последние 30 дней, отсортировать их по выручке по убыванию. Таблицы и поля базы данных: orders(id, user_id, order_date, total_amount), users(id, country, registration_date)».
Результат:

По такому же принципу вы можете попросить ГигаЧат улучшить запрос: упростить его, предложить более эффективную структуру, убрать дублирующиеся элементы и объяснить, зачем нужны эти изменения.
Попробуем отправить ИИ-инструменту такой промпт:
«Оптимизируй этот SQL-запрос:
SELECT *
FROM (
SELECT u.country,
SUM(o.total_amount) AS total_revenue
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.order_date >= CURRENT_DATE — INTERVAL ’30 days’
GROUP BY u.country
) t
ORDER BY t.total_revenue DESC
LIMIT 10;
Улучши читаемость кода и его производительность, а также объясни все изменения».
Результат:

Автоматизация повторяющихся задач
Работа аналитиков часто связана с созданием типовых запросов, например, для поиска выручки за определенный период, количества новых клиентов, наиболее продаваемых продуктов и так далее. ИИ умеет генерировать шаблоны, которые можно адаптировать под разные задачи, меняя только параметры запроса. Это позволяет разработчику сфокусироваться на более интересных, нестандартных задачах, делегируя рутинные дела нейросети.
Если вы только изучаете SQL, можно использовать ГигаЧат для генерации учебных схем баз данных и таблиц разной сложности.
Частые ошибки при написании SQL запросов
Нейросети помогают ускорить работу аналитикам и разработчикам, но иногда они допускают ошибки. Важно знать о самых распространенных ошибках, чтобы быстро проводить анализ предложений ИИ-генераторов и находить в них неточности:
- Неправильная интерпретация задачи. В таком случае искусственный интеллект генерирует корректный (рабочий) код, но он возвращает не те данные, что нужны пользователю. Единственный способ избежать этой проблемы — формулировать промпт четко и однозначно.
- Несоответствие кода конкретной СУБД. Чтобы исправить ошибку, достаточно попросить нейросеть адаптировать результат под вашу СУБД.
- Ошибки в операциях JOIN: объединение таблиц по неверному ключу, отсутствие условия соединения и так далее. Также возможны ошибки в группировке, например, когда генератор выбирает лишнее поле.
- Игнорирование ограничений. Например, в задаче про интернет-магазин нужно было не учитывать возвраты и отмененные заказы, но мы не указывали это в промпте.
- Тяжелые запросы. Нейросети могут генерировать правильный, но не оптимизированный код. Чтобы такого не было, просто добавьте к промпту фразу «напиши оптимизированный SQL-запрос».
Если учитывать эти ошибки, финальная проверка, анализ и тестирование кода, которое остается ответственностью разработчика, займет гораздо меньше времени.
Частые вопросы и ответы
Насколько точны запросы, сгенерированные с помощью ИИ?
Точность сгенерированных SQL-запросов зависит от качества промпта. Если он содержит схему базы данных, тип СУБД, ограничения и описание бизнес-логики, генератор с большей вероятностью напишет корректный код. Однако ИИ может допускать логические ошибки, а также неправильно работать со сложными схемами. Если в промпте явно не указан контекст (какие пользователи тестовые и т. д.), код может быть формально правильным, но не соответствовать бизнес-задаче. Поэтому лучше проводить проверку сгенерированных SQL-запросов.
Для каких диалектов поддерживается генерация запросов?
ИИ генерирует SQL-запросы для всех популярных диалектов. Но чтобы получать корректный результат, нужно явно указывать тип СУБД в промпте. Если этого нет, генераторы чаще всего пишут универсальный код.
Можно ли оптимизировать написанные мной запросы с помощью ИИ?
Да, нейросети умеют делать код более читаемым, убирать лишние подзапросы, упрощать JOIN-операции, добавлять комментарии и адаптировать SQL-запросы к разным СУБД.
Поддерживаются ли NoSQL запросы?
Да, большинство нейросетей умеют генерировать запросы в том числе для NoSQL-систем. Но для таких задач особенно важно точно описывать структуру данных в промпте — иначе ИИ-инструмент может использовать несуществующие атрибуты, неправильно работать с вложенными полями и допускать другие ошибки.
ИИ может помочь в изучении SQL?
Да, нейросети часто используют для изучения разных языков программирования, включая SQL. Как ИИ может помочь в обучении:
- объяснить теорию: базовые понятия и концепции, различия между командами;
- создать задания для отработки навыков с любым уровнем сложности;
- проверить код на наличие ошибок и объяснить, почему результат неверный или предложить оптимизированный вариант;
- разобрать сложные SQL-запросы, написанные другими разработчиками;
- подготовить к собеседованию: рассказать о частых ошибках соискателей, смоделировать техническое интервью и так далее.
Нейросети ускоряют обучение и делают его проще, но использовать их, как единственный источник знаний не стоит, поскольку они могут ошибаться. Также ИИ-инструменты не заменяет практику, когда начинающий программист пишет код своими руками.