Открытый гайд · ИИ-офис

Claude Codeи базы данных

Claude Code умеет писать SQL словами, читать схему и готовить миграции — но база не прощает ошибок. Разберём воркфлоу, где агент берёт на себя рутину, а ты не теряешь данные.

@kir.player
~13 минут
июнь 2026

База данных — это место, где живут реальные данные проекта: юзеры, заказы, посты. С Claude Code можно перестать вспоминать точный синтаксис SQL и формулировать запросы словами: «посчитай, сколько юзеров пришло за неделю, разбей по дням». Агент составит запрос сам. Но у работы с базой есть жёсткая граница: одна неаккуратная команда — и данные не вернуть. Поэтому весь гайд про две вещи сразу: как делегировать рутину и как не дать агенту что-нибудь снести.

Что узнаешь из гайда

  • Почему Claude нужна схема базы, чтобы запросы были точными
  • Как писать SQL-запросы словами на русском
  • Как подключить базу по MCP в режиме только для чтения
  • Как готовить миграции без правки SQL руками
  • Что НЕ доверять агенту — честная граница безопасности

Часть 1 · Контекст

Дай Claude схему базы

Главное

Без структуры таблиц агент угадывает имена колонок — и ошибается. Покажи 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.

чат Claude Code · даём контекст схемы
# Покажи агенту, где лежит описание структуры базы
Прочитай schema.prisma и migrations/ — это структура нашей базы.
Дальше будешь писать запросы строго под эти таблицы и колонки.

# Claude построит карту таблиц и связей в голове
# и перестанет выдумывать несуществующие поля

Если схемы в коде нет (например, база чужая), выгрузи структуру дампом — командой вроде pg_dump --schema-only для Postgres — и дай файл агенту. Главное правило: сначала контекст, потом запросы.


Часть 2 · Запросы

SQL-запросы словами

Главное

Описывай результат на русском, а синтаксис оставь агенту. «Топ-10 товаров по выручке за месяц» — Claude соберёт JOIN, GROUP BY и ORDER BY сам. Твоя работа — проверить логику, а не вспоминать порядок ключевых слов.

Это главный выигрыш. Раньше ты держал в голове, в каком порядке идут SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, и как написать оконную функцию. Теперь формулируешь задачу бизнес-языком, а агент переводит её в корректный SQL под твой диалект (Postgres, MySQL, SQLite — у них есть отличия).

чат Claude Code · запрос словами
# Ты пишешь словами:
Посчитай выручку по дням за последние 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

Главное

MCP даёт Claude живой канал к базе: он сам читает схему и гоняет запросы прямо из чата. Для Postgres есть готовый server-postgres — подключаешь строкой подключения и ограничиваешь доступ только чтением.

MCP (Model Context Protocol) — это стандарт, по которому Claude Code подключается к внешним инструментам, в том числе к базам. Без MCP ты копируешь схему и результаты руками. С MCP агент сам смотрит структуру, выполняет SELECT и приносит данные — цикл «вопрос → запрос → ответ» проходит без тебя как посредника. Что такое MCP в деталях — в гайде про MCP-серверы.

терминал · подключаем Postgres по MCP (read-only)
# Готовый сервер для Postgres — server-postgres.
# Передаём строку подключения; держим её в переменной окружения,
# а не вписываем в команду открытым текстом.
claude mcp add postgres -- \
  npx -y @modelcontextprotocol/server-postgres "$DATABASE_URL"

# После этого в чате можно просить:
#   "покажи схему таблицы orders"
#   "сколько активных подписок прямо сейчас"
# Claude сходит в базу сам

Ключевой момент безопасности — read-only доступ. Дай MCP-серверу пользователя базы, у которого есть права только на чтение. Тогда даже если агент решит что-то изменить, база ему не позволит: физически невозможно удалить или перезаписать данные через канал, открытый только на SELECT.


Часть 4 · Изменения структуры

Миграции без правки SQL руками

Главное

Миграция — это версионированное изменение структуры базы. Не давай агенту писать миграционный SQL руками: пусть меняет схему декларативно, а файл миграции генерирует штатный инструмент проекта. Так изменения откатываемы и предсказуемы.

Миграция — это файл, который описывает переход базы из одного состояния в другое: «добавить колонку», «создать таблицу», «навесить индекс». Они нумеруются и применяются по порядку, чтобы у всех разработчиков и на сервере была одинаковая структура. Опасность — когда агент сам сочиняет SQL внутри миграции: легко получить невалидную команду или потерю данных при откате.

Схему меняй декларативно, а миграцию пусть сгенерирует инструмент, не агент вручную.

Правильный воркфлоу: Claude правит описание модели (например, schema.prisma — добавляет поле, индекс, связь), а сам файл миграции создаёт штатная команда генерации. Так SQL пишет проверенный генератор, а не модель «на глаз», и у миграции есть откат.

воркфлоу миграции · декларативно
# 1. Агент меняет ОПИСАНИЕ схемы, а не SQL:
#    в schema.prisma добавляет поле phone в модель User

# 2. Миграцию генерирует штатный инструмент проекта
#    (команда генерации миграций из вашего стека)

# 3. Ты читаешь готовый файл миграции глазами

# 4. Применяешь миграцию сам — отдельным шагом,
#    не доверяя это автономному агенту

Перед изменением структуры включи план-режим (Shift+Tab): агент сначала распишет, что и зачем меняет, ты утверждаешь, и только потом он трогает файлы. Для базы это особенно важно — увидеть план до изменений дешевле, чем откатывать.


Часть 5 · Безопасность

Воркфлоу без потери данных

Главное

Дели доступ по риску: чтение отдаёшь агенту смело, запись и удаление — только через свои руки. Боевая база на запись агенту не открывается никогда без явного шага человека.

Соберём правила безопасности в один чек-лист. Они не про паранойю — про то, что данные пользователей восстановить нельзя, а ошибка агента стоит ровно столько, сколько стоит потерянная таблица.

  1. Read-only по умолчанию. MCP-подключение и доступ к базе — на чтение. Запись включается осознанно и точечно.
  2. Меняющие запросы — через ревью. Любой UPDATE, DELETE, DROP сначала читаешь глазами, потом запускаешь сам.
  3. Бэкап перед изменением. Перед миграцией или массовым апдейтом — свежая копия. Это твоя кнопка «отменить».
  4. Сначала на копии. Тяжёлые операции прогоняй на тестовой базе или дампе, а не сразу на проде.
  5. Права в settings.json. Опасные команды занеси в deny или ask — см. гайд про права.

Когда НЕ доверять агенту

Не давай Claude автономную запись в продакшн-базу, не запускай DELETE/DROP без своего ревью и не разрешай bypass-режим на сессии, где открыта боевая база. Автономный цикл и необратимые команды над живыми данными — несовместимы. Анализ, отчёты, черновики запросов — да; удаление продакшн-данных — руками.

Типичный сценарий

«Найди дубли заказов и покажи их». Агент по read-only MCP пишет SELECT с группировкой, приносит список. Ты смотришь, решаешь, что удалять, и формируешь DELETE с точным WHERE — сам. Агент сделал скучную часть, ты оставил за собой опасную.

Коротко

  • Сначала дай Claude схему — иначе запросы бьют мимо колонок.
  • SQL пиши словами, проверяй логику и проси объяснение.
  • База по MCP в read-only, миграции — декларативно и с ревью.
  • Запись и удаление в проде — через руки человека, не автономно.

Вопросы

Частые вопросы

Может ли Claude Code писать SQL-запросы?

Да, Claude Code пишет SQL по запросу на русском: ты описываешь словами, что нужно достать из базы, а агент составляет запрос под твою схему. Чтобы запросы были точными, дай Claude доступ к структуре таблиц — через схему в репозитории, дамп DDL или подключение базы по MCP. Тогда он видит реальные имена колонок и связей, а не угадывает.

Как безопасно делать миграции базы данных через Claude Code?

Безопасная миграция через Claude Code строится на трёх правилах: агент готовит миграцию через штатный инструмент проекта, а не пишет SQL руками; ты ревьюишь её до применения; применяешь миграцию сам или отдельным шагом, не давая агенту доступ на запись в боевую базу. Так структура меняется декларативно, а необратимые команды не уходят в продакшн случайно.

Как подключить базу данных к Claude Code?

Базу подключают к Claude Code через MCP-сервер — например, server-postgres, которому передают строку подключения. После этого Claude может читать схему и выполнять запросы прямо из чата. Для безопасности доступ ограничивают только чтением (read-only), чтобы агент мог анализировать данные, но не менял и не удалял их без твоего участия.

Опасно ли давать Claude Code доступ к продакшн-базе?

Да, прямой доступ Claude Code к боевой базе на запись — это риск необратимой потери данных, поэтому так делать не стоит. Безопасный подход: дать агенту read-only доступ к копии или к продакшну только для чтения, а любые изменения структуры проводить через миграции с ревью. Удаление и UPDATE без WHERE — это команды, которые должен запускать человек, а не агент в автономном режиме.

Читать дальше

Соседние гайды

Telegram про вайбкодинг и ИИ

Прикладной материал, разборы и рабочие приёмы — то, чем пользуюсь сам, без воды. Залетай, там самое полезное.

Зайти в Telegram