Go 语言入门很简单:如何在 Go 语言中使用 MySQL

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL 是一个基于结构化查询语言(SQL)的开源关系数据库管理系统。它是一种关系数据库,可将数据组织到一个或多个表中,其中数据相互关联。MySQL 是行业领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。

引言

MySQL 是一个基于结构化查询语言(SQL)的开源关系数据库管理系统。它是一种关系数据库,可将数据组织到一个或多个表中,其中数据相互关联。MySQL 是行业领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。


数据库驱动程序:数据库驱动程序实现了用于数据库连接的协议。驱动程序就像一个适配器,连接到特定数据库的通用接口。


Go 有 sql 包,它提供了一个围绕 SQL(或类似 SQL)数据库的通用接口。 sql 包必须与数据库驱动程序一起使用。该软件包提供自动连接池。每次查询数据库时,我们都在使用应用程序启动时设置的连接池中的连接。连接被重用。

如何在 Go 语言中使用 MySQL


  1. 启动 MySQL 服务器并使用以下命令安装 go MySQL 驱动程序。
go get -u github.com/go-sql-driver/mysql
  1. 创建数据库对象:

使用 sql.Open 创建一个数据库对象。相反,没有与 MySQL 建立连接,它只创建一个可以稍后使用的数据库对象。

db, err := sql.Open("mysql", "<user>:<password>@tcp(127.0.0.1:3306)/<database-name>")

使用 sql.Open,我们打开一个由其数据库驱动程序名称和驱动程序特定数据源名称指定的数据库,通常至少由数据库名称和连接信息组成。它不与数据库建立任何连接,也不验证驱动程序连接参数。相反,它只是为以后使用准备数据库抽象。当第一次需要时,将延迟建立与底层数据存储的第一个实际连接。

  1. 导入 MySQL 驱动
_ "github.com/go-sql-driver/mysql"

当导入带有空白标识符前缀 _ 的包时,将调用包的 init 函数。该函数注册驱动程序。

  1. defer.Close()

Close 将连接返回到连接池。如果 sql.DB 的生命周期不应超出函数范围,则推迟 db.Close 是常用的。

连接数据库并查询 MySQL 版本号

我们来编写一个程序返回 MySQL 的版本。版本由执行 SELECT VERSION() 语句确定,在 MySQL 的终端中运行本地版本号:

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.25    |
+-----------+
1 row in set (0.00 sec)

然后我们按照上述的步骤,编写一个 Go 语言的代码查看数据库的版本号:

package main
import (
  "database/sql"
  "fmt"
  _ "github.com/go-sql-driver/mysql"
  "log"
)
func main() {
  db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/DB_TEST")
  db.Ping()
  defer db.Close()
  if err != nil {
    fmt.Println("数据库连接失败!")
    log.Fatalln(err)
  }
  var version string
  err2 := db.QueryRow("SELECT VERSION()").Scan(&version)
  if err2 != nil {
    log.Fatal(err2)
  }
  fmt.Println(version)
}

建好 go.mod 文件:

$ go mod init main.go                     
go: creating new go.mod: module main.go
go: to add module requirements and sums:
        go mod tidy

运行该代码:

$ go run main.go         
5.7.25

与我们在 MySQL 终端中得到的结果一致,说明数据库连接成功,SELECT VERSION(), 也是没有问题的。

总结

本文展示了如何在 Go 语言中使用 MySQL,并给出了详细关键步骤的说明。并在查询 MySQL 版本号的程序中验证了 Go 语言连接数据库成功,下一篇文章将学习如何使用 Go 语言对 MySQL 数据库进行数据的增删改查,下一篇文章再见!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
Go
go语言中的数据类型
go语言中的数据类型
11 0
|
11天前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
44 0
|
15天前
|
存储 安全 Go
掌握Go语言:Go语言类型转换,无缝处理数据类型、接口和自定义类型的转换细节解析(29)
掌握Go语言:Go语言类型转换,无缝处理数据类型、接口和自定义类型的转换细节解析(29)
|
4天前
|
SQL 关系型数据库 MySQL
DQL语言之基础查询(mysql)
DQL语言之基础查询(mysql)
|
4天前
|
SQL 关系型数据库 MySQL
DQL语言之常见函数(mysql)
DQL语言之常见函数(mysql)
|
4天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)
|
9天前
|
存储 Java 编译器
go语言基础语法
go语言基础语法
|
15天前
|
存储 缓存 安全
掌握Go语言:Go语言Map,高效键值对集合的应用与注意事项详解(26)
掌握Go语言:Go语言Map,高效键值对集合的应用与注意事项详解(26)
|
15天前
|
存储 安全 编译器
掌握Go语言:精通Go语言范围(range),高级应用及进销存系统实战(25)
掌握Go语言:精通Go语言范围(range),高级应用及进销存系统实战(25)
|
11天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)