Claude Code умеет писать SQL словами, читать схему и готовить миграции — но база не прощает ошибок. Разберём воркфлоу, где агент берёт на себя рутину, а ты не теряешь данные.
База данных — это место, где живут реальные данные проекта: юзеры, заказы, посты. С Claude Code можно перестать вспоминать точный синтаксис SQL и формулировать запросы словами: «посчитай, сколько юзеров пришло за неделю, разбей по дням». Агент составит запрос сам. Но у работы с базой есть жёсткая граница: одна неаккуратная команда — и данные не вернуть. Поэтому весь гайд про две вещи сразу: как делегировать рутину и как не дать агенту что-нибудь снести.
Что узнаешь из гайда
Часть 1 · Контекст
Главное
Без структуры таблиц агент угадывает имена колонок — и ошибается. Покажи Claude схему: файл миграций, дамп DDL или живое подключение по MCP. Тогда запросы попадают в реальные поля с первого раза.
Расшифруем термины. Схема (schema) — это описание структуры базы: какие есть таблицы, какие в них колонки, какого типа и как они связаны между собой. DDL (Data Definition Language) — это SQL-команды вроде CREATE TABLE, которые эту структуру задают. Claude пишет хороший SQL только когда видит схему: иначе он придумывает поле user_name, а у тебя в базе оно называется username, и запрос падает.
Самый простой способ дать контекст — показать файл, где схема уже описана. В проекте с Prisma это schema.prisma, с миграциями — папка migrations/, с TypeORM или Drizzle — файлы моделей. Claude прочитает их при старте, особенно если ты упомянешь путь в CLAUDE.md.
# Покажи агенту, где лежит описание структуры базы
Прочитай schema.prisma и migrations/ — это структура нашей базы.
Дальше будешь писать запросы строго под эти таблицы и колонки.
# Claude построит карту таблиц и связей в голове
# и перестанет выдумывать несуществующие поляЕсли схемы в коде нет (например, база чужая), выгрузи структуру дампом — командой вроде pg_dump --schema-only для Postgres — и дай файл агенту. Главное правило: сначала контекст, потом запросы.
Часть 2 · Запросы
Главное
Описывай результат на русском, а синтаксис оставь агенту. «Топ-10 товаров по выручке за месяц» — Claude соберёт JOIN, GROUP BY и ORDER BY сам. Твоя работа — проверить логику, а не вспоминать порядок ключевых слов.
Это главный выигрыш. Раньше ты держал в голове, в каком порядке идут SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, и как написать оконную функцию. Теперь формулируешь задачу бизнес-языком, а агент переводит её в корректный SQL под твой диалект (Postgres, MySQL, SQLite — у них есть отличия).
# Ты пишешь словами:
Посчитай выручку по дням за последние 30 дней.
Только оплаченные заказы. Отсортируй от свежих к старым.
# Claude отдаёт готовый SQL под твою схему:
# SELECT date_trunc('day', created_at) AS day,
# SUM(total) AS revenue
# FROM orders
# WHERE status = 'paid'
# AND created_at >= now() - interval '30 days'
# GROUP BY day
# ORDER BY day DESC;Важный приём — просить объяснение. Добавь «и объясни, что делает каждая строка». Так ты не просто получаешь запрос, а учишься читать SQL и ловишь логические ошибки до того, как они доберутся до базы. Если запрос тяжёлый, попроси добавить EXPLAIN и прикинуть, по каким индексам он пойдёт.
Важно
Читающий запрос (SELECT) безопасен — он только достаёт данные. Меняющий (UPDATE, DELETE, DROP) опасен. Перед запуском любого меняющего запроса проверь его глазами и убедись, что есть WHERE. DELETE без WHERE сносит всю таблицу.
Часть 3 · Подключение
Главное
MCP даёт Claude живой канал к базе: он сам читает схему и гоняет запросы прямо из чата. Для Postgres есть готовый server-postgres — подключаешь строкой подключения и ограничиваешь доступ только чтением.
MCP (Model Context Protocol) — это стандарт, по которому Claude Code подключается к внешним инструментам, в том числе к базам. Без MCP ты копируешь схему и результаты руками. С MCP агент сам смотрит структуру, выполняет SELECT и приносит данные — цикл «вопрос → запрос → ответ» проходит без тебя как посредника. Что такое MCP в деталях — в гайде про MCP-серверы.
# Готовый сервер для Postgres — server-postgres.
# Передаём строку подключения; держим её в переменной окружения,
# а не вписываем в команду открытым текстом.
claude mcp add postgres -- \
npx -y @modelcontextprotocol/server-postgres "$DATABASE_URL"
# После этого в чате можно просить:
# "покажи схему таблицы orders"
# "сколько активных подписок прямо сейчас"
# Claude сходит в базу самКлючевой момент безопасности — read-only доступ. Дай MCP-серверу пользователя базы, у которого есть права только на чтение. Тогда даже если агент решит что-то изменить, база ему не позволит: физически невозможно удалить или перезаписать данные через канал, открытый только на SELECT.
Часть 4 · Изменения структуры
Главное
Миграция — это версионированное изменение структуры базы. Не давай агенту писать миграционный SQL руками: пусть меняет схему декларативно, а файл миграции генерирует штатный инструмент проекта. Так изменения откатываемы и предсказуемы.
Миграция — это файл, который описывает переход базы из одного состояния в другое: «добавить колонку», «создать таблицу», «навесить индекс». Они нумеруются и применяются по порядку, чтобы у всех разработчиков и на сервере была одинаковая структура. Опасность — когда агент сам сочиняет SQL внутри миграции: легко получить невалидную команду или потерю данных при откате.
Схему меняй декларативно, а миграцию пусть сгенерирует инструмент, не агент вручную.
Правильный воркфлоу: Claude правит описание модели (например, schema.prisma — добавляет поле, индекс, связь), а сам файл миграции создаёт штатная команда генерации. Так SQL пишет проверенный генератор, а не модель «на глаз», и у миграции есть откат.
# 1. Агент меняет ОПИСАНИЕ схемы, а не SQL:
# в schema.prisma добавляет поле phone в модель User
# 2. Миграцию генерирует штатный инструмент проекта
# (команда генерации миграций из вашего стека)
# 3. Ты читаешь готовый файл миграции глазами
# 4. Применяешь миграцию сам — отдельным шагом,
# не доверяя это автономному агентуПеред изменением структуры включи план-режим (Shift+Tab): агент сначала распишет, что и зачем меняет, ты утверждаешь, и только потом он трогает файлы. Для базы это особенно важно — увидеть план до изменений дешевле, чем откатывать.
Часть 5 · Безопасность
Главное
Дели доступ по риску: чтение отдаёшь агенту смело, запись и удаление — только через свои руки. Боевая база на запись агенту не открывается никогда без явного шага человека.
Соберём правила безопасности в один чек-лист. Они не про паранойю — про то, что данные пользователей восстановить нельзя, а ошибка агента стоит ровно столько, сколько стоит потерянная таблица.
UPDATE, DELETE, DROP сначала читаешь глазами, потом запускаешь сам.deny или ask — см. гайд про права.Когда НЕ доверять агенту
Не давай Claude автономную запись в продакшн-базу, не запускай DELETE/DROP без своего ревью и не разрешай bypass-режим на сессии, где открыта боевая база. Автономный цикл и необратимые команды над живыми данными — несовместимы. Анализ, отчёты, черновики запросов — да; удаление продакшн-данных — руками.
Типичный сценарий
«Найди дубли заказов и покажи их». Агент по read-only MCP пишет SELECT с группировкой, приносит список. Ты смотришь, решаешь, что удалять, и формируешь DELETE с точным WHERE — сам. Агент сделал скучную часть, ты оставил за собой опасную.
Коротко
Вопросы
Да, Claude Code пишет SQL по запросу на русском: ты описываешь словами, что нужно достать из базы, а агент составляет запрос под твою схему. Чтобы запросы были точными, дай Claude доступ к структуре таблиц — через схему в репозитории, дамп DDL или подключение базы по MCP. Тогда он видит реальные имена колонок и связей, а не угадывает.
Безопасная миграция через Claude Code строится на трёх правилах: агент готовит миграцию через штатный инструмент проекта, а не пишет SQL руками; ты ревьюишь её до применения; применяешь миграцию сам или отдельным шагом, не давая агенту доступ на запись в боевую базу. Так структура меняется декларативно, а необратимые команды не уходят в продакшн случайно.
Базу подключают к Claude Code через MCP-сервер — например, server-postgres, которому передают строку подключения. После этого Claude может читать схему и выполнять запросы прямо из чата. Для безопасности доступ ограничивают только чтением (read-only), чтобы агент мог анализировать данные, но не менял и не удалял их без твоего участия.
Да, прямой доступ Claude Code к боевой базе на запись — это риск необратимой потери данных, поэтому так делать не стоит. Безопасный подход: дать агенту read-only доступ к копии или к продакшну только для чтения, а любые изменения структуры проводить через миграции с ревью. Удаление и UPDATE без WHERE — это команды, которые должен запускать человек, а не агент в автономном режиме.
Читать дальше
Прикладной материал, разборы и рабочие приёмы — то, чем пользуюсь сам, без воды. Залетай, там самое полезное.
Зайти в Telegram