Go: SQL
Теория: Введение
В Go работа с базами строится вокруг пакета database/sql. Он задаёт общий интерфейс, с которым работают все драйверы: PostgreSQL, MySQL, SQLite, MSSQL и другие. Пакет не привязан к конкретной базе, а даёт единый способ подключаться, выполнять запросы и получать результаты. Благодаря этому код остаётся переносимым: если сменить драйвер, логика приложения не меняется.
Go не предлагает встроенный ORM. Это сделано сознательно. Авторы языка стремятся к простоте и прозрачности, поэтому разработчик сам пишет SQL-запросы и контролирует всё, что происходит в базе. Такой подход помогает понимать работу индексов, планы выполнения и влияние запроса на производительность.
Но в реальном проекте ручной SQL быстро превращается в рутину. Запросы повторяются, растёт число структур и связей. Чтобы снизить объём этой работы, появились инструменты вроде sqlc. Он берёт запросы из файлов и генерирует типобезопасный Go-код. Прозрачность SQL сохраняется, а рутинное маппирование уходит.
Знание SQL в Go — это часть архитектурного мышления. Код, который правильно использует транзакции, аккуратно закрывает соединения и безопасно передаёт параметры, становится устойчивым и предсказуемым. Ошибка в запросе влияет на приложение сильнее, чем ошибка в бизнес-логике: она может заблокировать таблицу, потерять данные или создать утечку ресурсов. Поэтому важно понимать путь данных от строки SQL до структуры Go в памяти.
В этом курсе разбираются основные элементы работы с SQL в Go. Сначала — базовый интерфейс database/sql и его поведение. Потом — безопасные запросы, подготовленные выражения и транзакции. Далее — автоматизация с помощью sqlc и тестирование кода, который общается с базой. Курс не учит SQL с нуля, а показывает, как этот язык используется внутри Go-приложения и как построить надёжный слой доступа к данным.


