📅  最后修改于: 2023-12-03 15:36:28.202000             🧑  作者: Mango
在 Go 中,我们可以使用第三方包来连接、操作数据库。以下是一些常用的数据库连接包:
下面,我们以 database/sql
和 go-sql-driver/mysql
为例,向您展示如何使用 Go 创建 MySQL 数据库。
在使用 go-sql-driver/mysql
之前,我们需要确保已经安装了该驱动程序。您可以在终端中键入以下命令来安装它:
go get -u github.com/go-sql-driver/mysql
该命令将下载并安装 go-sql-driver/mysql
到 GOPATH 中。
首先,我们需要使用 sql.Open
函数打开 MySQL 数据库连接。以下是一个连接到名为 employees
的数据库的示例:
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/employees")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
// ...
}
在此示例中,我们使用了 sql.Open
函数打开了一个名为 employees
的 MySQL 数据库连接。该函数需要两个参数:
mysql
。使用 Go 创建数据库表很简单。以下是一个示例,创建了一个名为 employee
的表:
_, err = db.Exec("CREATE TABLE employee (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INT)")
if err != nil {
fmt.Println(err)
return
}
在此示例中,我们使用了 db.Exec
函数创建了名为 employee
的表。该函数可以执行任何不返回行结果的 SQL 语句。
我们可以使用 db.Exec
函数将数据插入 MySQL 数据库。以下是一个示例,插入了两条员工记录:
_, err = db.Exec("INSERT INTO employee (name, age) VALUES (?, ?), (?, ?)", "Alice", 23, "Bob", 25)
if err != nil {
fmt.Println(err)
return
}
在此示例中,我们使用了 db.Exec
函数插入了两条员工记录,分别为:
使用 Go 查询 MySQL 数据非常简单。以下是一个示例,查询年龄小于 25 岁的员工记录:
rows, err := db.Query("SELECT * FROM employee WHERE age < ?", 25)
if err != nil {
fmt.Println(err)
return
}
defer rows.Close()
for rows.Next() {
var id, age int
var name string
err := rows.Scan(&id, &name, &age)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(id, name, age)
}
在此示例中,我们使用了 db.Query
函数执行一个简单的查询,查询年龄小于 25 岁的员工记录。该函数返回一个指向行结果的迭代器(*Rows
)。我们可以使用 rows.Scan
函数扫描每一行的值,并将其存储到 Go 变量中。
如您所见,使用 Go 创建 MySQL 数据库是相当简单的,我们只需使用 database/sql
套件和 go-sql-driver/mysql
驱动程序即可。无论您是创建新表,插入数据,还是查询结果集,Go 都提供了一种简单而灵活的方式来操作 MySQL 数据库。