Базы данных SQL хранят наборы данных в строках и столбцах. Вы можете извлекать и обновлять данные в системе управления реляционными базами данных (RDBMS) с помощью языка SQL. Из многих доступных баз данных SQL наиболее популярными являются MySQL, PostgreSQL, Microsoft SQL Server и SQLite.

Функционал для взаимодействия с базами данных в Go находится в пакете database/sql, входящем в стандартную библиотеку.

Пакет database/sql взаимодействует с базами данных SQL с помощью драйверов. Вы можете импортировать соответствующий пакет драйверов для своей СУБД и использовать его для взаимодействия с базой данных.

Начало работы с базами данных SQL в Go

Пакет database/sql представляет собой общий интерфейс для реляционных баз данных. Для работы с определенным сервером базы данных вам потребуется использовать один из множества доступных драйверов.

К счастью, вам не нужно беспокоиться о конкретных реализациях помимо драйвера. Пакет database/sql обрабатывает операции базы данных независимо от сервера, к которому вы подключаетесь.

instagram viewer

Некоторые из самых популярных драйверов базы данных Go:

  • Драйвер Go-SQL (Майскл)
  • PQ (Постгрес SQL)
  • Go-SQLite3 (SQLite)
  • БД MSSQL (Майкрософт SQL сервер)

Вы можете использовать Список драйверов LibHunt найти эквиваленты для другие типы баз данных. Список также показывает относительную популярность каждой системы баз данных:

Установка и импорт драйверов базы данных Go

После того, как вы создали рабочее пространство Go и инициализировали файл модулей Go, установите драйвер, соответствующий вашей системе баз данных. Например, запустите одну из следующих команд в каталоге рабочей области, чтобы установить драйвер MySQL или SQLite:

получить -u github.com/go-sql-driver/mysql
зайди на github.com/mattn/go-sqlite3

После установки драйвера импортируйте его для побочных эффектов, добавив префикс подчеркивания перед пакетом. Например, чтобы импортировать драйвер MySQL вместе с пакетом database/sql:

импорт (
"база данных/sql"
_ "github.com/идти-sql-драйвер/mysql"
)

Импортируя пакет драйвера для побочных эффектов, вы можете использовать его для подключения к базе данных и выполнения операций с ней.

Подключение к базе данных SQL с помощью Go

После импорта драйверов базы данных вы можете создать подключение к базе данных с помощью Открытым метод база данных/sql упаковка. Этот метод принимает имя драйвера и путь к базе данных (для SQLite) или строку подключения (для MySQL). Например, используйте одно из следующих действий:

БД, ошибка := sql. Открыть ("sqlite3", "модели/testdb.db") // SQLite

БД, ошибка := sql. Открыть("mysql", "пользователь: пароль@/имя БД") // MySQL

После того, как вы попытаетесь открыть соединение, не забудьте проверить наличие ошибки:

если ошибся != ноль {
журнал. Fatalln (ошибка)
}

В зависимости от вашей системы баз данных, Открытым метод может вернуть ошибку, если база данных не существует. После подключения к базе данных вы можете выполнять запросы и готовить операторы, используя экземпляр базы данных, который Открытым возвращается.

Выполнение команд SQL

Вы можете выполнять SQL-команды с использованием Подготовить метод вашего экземпляра базы данных. Подготовить метод принимает команду SQL и возвращает подготовленный оператор для выполнения вместе с объектом ошибки. Например, если вы хотите создать новую таблицу:

команда, ошибка := БД. Prepare("СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ логин (имя пользователя ТЕКСТ, пароль ТЕКСТ)")

Оператор выше создает таблицу с именем авторизоваться, если он еще не существует. В новой таблице есть поля с именами имя пользователя а также пароль, каждый типа ТЕКСТ.

Если вы вставляете значения из своей программы в свои запросы, вы можете использовать нотацию вопросительного знака (?) для обозначения заполнителей, а затем передавать параметры при выполнении инструкции.

команда, ошибка := БД. Prepare("ВСТАВИТЬ В логин (имя пользователя, пароль) значения(?,?)")

После того, как вы создали подготовленный оператор, вы можете выполнить его, используя его Исполнитель метод. Этот метод позволяет передавать значения параметров из вашей программы:

exec, ошибка := команда. Exec (значение1, значение2)

если ошибся != ноль {
возвращаться
}

Первое значение, которое Исполнитель() возвращает результат SQL-запроса к вашей базе данных. Используя этот результат запроса, вы можете проверить количество затронутых строк или последний вставленный идентификатор:

затронуто, ошибка := exec. Затронутые строки ()

если ошибся != ноль {
возвращаться
}

ФМТ. Println (затронуто)

id, ошибка := exec. LastInsertId()

если ошибся != ноль {
возвращаться
}

ФМТ. Println (идентификатор)

Получение результатов запроса

Пакет database/sql позволяет запрашивать результаты базы данных, используя Запрос метод экземпляра базы данных:

строки, ошибка := БД. Запрос("ВЫБЕРИТЕ * ОТ Пользователя")

если ошибся != ноль {
возвращаться
}

Запрос метод возвращает Ряды структуру, которую вы можете использовать для работы с вашим набором результатов. Например, вы можете использовать Следующий метод вашего экземпляра строк, чтобы перебирать его и работать с отдельными строками:

вар имя пользователя Пароль нить

за ряды. Следующий() {
ошибка := строки. Сканировать(&имя пользователя, &пароль)

если ошибся != ноль {
журнал. Fatalln (ошибка)
}

ФМТ. Println (имя пользователя, пароль)
}

В приведенном выше примере две строковые переменные —имя пользователя а также пароль— представляет значение каждого столбца. Сканировать метод декодирует текущую строку в соответствующие переменные.

Базы данных SQL всегда пригодятся

Использование баз данных в Go очень просто с помощью пакета database/sql. Вы можете легко использовать его для запроса и выполнения команд SQL в Go.

Базы данных SQL лежат в основе многих приложений, особенно тех, которые работают с большими или сложными наборами данных. Вы можете использовать базы данных, такие как база данных SQLite в памяти, для своих простых проектов, таких как просмотр веб-страниц и создание ботов.

Надлежащее знание SQL и систем управления базами данных необходимо для их эффективного использования в ваших программах. Однако, если вы решите не изучать SQL, вы можете научиться использовать ORM для взаимодействия с базами данных SQL в Go.