📜  使用 go 创建数据库 (1)

📅  最后修改于: 2023-12-03 15:36:28.202000             🧑  作者: Mango

使用 Go 创建数据库

在 Go 中,我们可以使用第三方包来连接、操作数据库。以下是一些常用的数据库连接包:

  • database/sql:Go 标准库中的数据库连接包,支持使用不同的驱动程序连接各种不同类型的数据库。
  • go-sql-driver/mysql:一种 MySQL 驱动程序,可在 Go 中进行使用。
  • lib/pq:一个 PostgreSQL 驱动程序,可在 Go 中进行使用。
  • mgo:一个 MongoDB 驱动程序,可在 Go 中进行使用。

下面,我们以 database/sqlgo-sql-driver/mysql 为例,向您展示如何使用 Go 创建 MySQL 数据库。

确保安装了 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 数据库连接。该函数需要两个参数:

  • driverName:指定使用的 MySQL 驱动程序,例如 mysql
  • dataSourceName:指定数据库的访问凭据和地址。
创建数据库表

使用 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 函数插入了两条员工记录,分别为:

  • 姓名为 Alice,年龄为 23
  • 姓名为 Bob,年龄为 25
查询数据

使用 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 数据库。