>  기사  >  백엔드 개발  >  golang에서 mysql 데이터를 조작하는 방법

golang에서 mysql 데이터를 조작하는 방법

PHPz
PHPz원래의
2023-03-22 14:23:561647검색

현대 소프트웨어 엔지니어링에서는 효율적이고 안정적인 서버 애플리케이션을 구축하는 데 필요한 기술에 대한 수요가 높습니다. 그 중 Go 언어를 사용하여 관계형 데이터베이스를 호출하는 것은 필수적인 기초입니다. 이 기사에서는 Go 언어의 표준 패키지를 사용하여 MySQL 데이터를 쿼리하고 삽입합니다.

MySQL이란 무엇입니까

MySQL은 인터넷 인프라에서 널리 사용되는 관계형 데이터베이스 관리 시스템으로 Oracle Corporation의 후원으로 개발되었습니다. Go 언어를 포함한 여러 운영 체제와 프로그래밍 언어를 지원하며 대규모 데이터 통합 ​​및 고성능 쿼리를 지원하는 일련의 기능을 갖추고 있습니다.

MySQL 데이터는 테이블을 기반으로 합니다. 데이터의 한 행은 하나의 레코드에 해당하고, 데이터의 한 열은 하나의 필드에 해당합니다. SQL 언어를 사용하여 데이터 작업을 수행하며 가장 일반적인 SQL 작업에는 SELECT, INSERT, UPDATE, DELETE 및 CREATE TABLE이 포함됩니다.

Go 언어의 MySQL 드라이버

Go 언어에서는 타사 MySQL 드라이버를 사용하여 MySQL 데이터베이스에 연결하고 쿼리할 수 있습니다. 그러나 GO 언어 표준 라이브러리에는 이미 database/sql 패키지가 포함되어 있습니다. 이 패키지는 표준 SQL 데이터베이스 인터페이스를 구현했으며 MySQL, PostgreSQL 및 SQLite 등을 포함한 다른 편리하고 널리 사용되는 SQL 데이터베이스와 상호 작용할 수 있습니다. database/sql 包,这个包已经实现了标准的 SQL 数据库接口,可以和其他方便的流行的 SQL 数据库交互操作,包括 MySQL、PostgreSQL 和 SQLite 等。

因此,在我们开始构建查询 MySQL 的 Go 应用程序之前,我们需要安装 MySql 驱动程序。可以使用命令行命令 go get -u github.com/go-sql-driver/mysql 快捷安装。

这是因为在 Go 语言中,所有的数据访问都需通过 SQL.DB 连接进行。并且驱动程序的目的是用来实现 database/sql 的功能中那样的的接口约定。

建立连接

在 Go 语言中,建立到 MySQL 数据库的连接是基于连接字符串的,连接字符串包含连接 MySQL 所需的所有参数,如用户名、密码、主机名或 IP 地址、端口号和数据库名称等。

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    log.Fatal(err)
}

查询数据

在 Go 语言中,可以使用 db.Query()db.QueryRow()db.Exec() 函数查询和操作 MySQL 数据库中的数据。

db.Query() 函数用于查询多条记录,返回一个 *sql.Rows 对象。db.QueryRow() 函数用于查询单条记录,返回一个 *sql.Row 对象,类似于 resultset,但是它只返回第一行记录,通常用于查询单个唯一记录。db.Exec() 函数用于执行非查询 SQL 语句,例如 INSERT、UPDATE 和 DELETE,返回一个 sql.Result 对象。

在本例中,我们使用 db.Query() 函数来查询所有记录。我们将使用一个简单的计数器来统计记录的数量,并将每行数据打印到控制台。

rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

count := 0
for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("id=%d, name=%s\n", id, name)
    count++
}
if err := rows.Err(); err != nil {
    log.Fatal(err)
}

fmt.Printf("Found %d users\n", count)

必须在检索数据后调用 rows.Close() 函数以释放与 *sql.Rows 关联的数据库资源。同时,代码中使用了 rows.Next() 函数,它返回一个布尔值,指示是否还有更多的行可以进行处理。另外,在这个例子中使用了 rows.Scan() 函数将每行记录的值复制到这个例子中定义的 idname 变量中,然后在控制台中打印每个值。

插入数据

我们也可以使用 Go 语言插入数据到 MySQL 数据库中,最简单的方法使用 db.Exec() 函数。我们可以将插入语句传递到 db.Exec() 函数中,它将以 SQL 语句的形式在 MySQL 中执行。

result, err := db.Exec("INSERT INTO users(name, email) VALUES('John Doe', 'johndoe@gmail.com')")
if err != nil {
    log.Fatal(err)
}

rowsAffected, err := result.RowsAffected()
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Inserted %d rows into users table\n", rowsAffected)

我们可以使用 result.RowsAffected() 获取结果集中受影响的行数,并使用该数值在控制台中打印更新数据的数量。

总结

在本文中,我们介绍了使用 Go 语言进行 MySQL 数据库的基础查询操作。我们了解了如何使用标准库 database/sql 和第三方 MySQL 驱动程序,建立连接并查询数据。我们还了解了如何插入数据,使用 db.Exec()

따라서 MySQL을 쿼리하는 Go 애플리케이션 구축을 시작하기 전에 MySql 드라이버를 설치해야 합니다. 빠른 설치를 위해 go get -u github.com/go-sql-driver/mysql 명령줄 명령을 사용할 수 있습니다. 🎜🎜Go 언어에서는 모든 데이터 접근이 SQL.DB 연결을 통해서 이루어져야 하기 때문입니다. 그리고 드라이버의 목적은 database/sql의 함수에서 인터페이스 규칙을 구현하는 것입니다. 🎜🎜🎜연결 설정🎜🎜🎜Go 언어에서 MySQL 데이터베이스에 대한 연결 설정은 연결 문자열을 기반으로 합니다. 연결 문자열에는 사용자 이름, 비밀번호, 호스트 이름 등 MySQL에 연결하는 데 필요한 모든 매개변수가 포함되어 있습니다. 또는 IP 주소, 포트 번호 및 데이터베이스 이름 등 🎜rrreee🎜🎜Query data🎜🎜🎜Go 언어에서는 db.Query(), db.QueryRow()db.Exec()을 사용할 수 있습니다. MySQL 데이터베이스의 데이터를 쿼리하고 조작하는 함수입니다. 🎜🎜db.Query() 함수는 여러 레코드를 쿼리하는 데 사용되며 *sql.Rows 개체를 반환합니다. db.QueryRow() 함수는 단일 레코드를 쿼리하는 데 사용되며 resultset와 유사한 *sql.Row 개체를 반환하지만 일반적으로 단일 고유 레코드를 쿼리하는 데 사용되는 레코드의 첫 번째 A 행만 반환합니다. db.Exec() 함수는 INSERT, UPDATE, DELETE와 같은 쿼리가 아닌 SQL 문을 실행하여 sql.Result 개체를 반환합니다. 🎜🎜이 예제에서는 db.Query() 함수를 사용하여 모든 레코드를 쿼리합니다. 간단한 카운터를 사용하여 레코드 수를 계산하고 각 데이터 줄을 콘솔에 인쇄하겠습니다. 🎜rrreee🎜*sql.Rows와 연결된 데이터베이스 리소스를 해제하려면 데이터를 검색한 후 rows.Close() 함수를 호출해야 합니다. 또한 코드는 처리할 수 있는 행이 더 있는지 여부를 나타내는 부울 값을 반환하는 rows.Next() 함수를 사용합니다. 또한 이 예에서는 rows.Scan() 함수를 사용하여 각 행 레코드의 값을 정의된 idname에 복사합니다. 이 예에서는 > 변수를 선택하고 콘솔에 각 값을 인쇄합니다. 🎜🎜🎜데이터 삽입🎜🎜🎜Go 언어를 사용하여 MySQL 데이터베이스에 데이터를 삽입할 수도 있습니다. 가장 간단한 방법은 db.Exec() 함수를 사용하는 것입니다. insert 문을 db.Exec() 함수에 전달할 수 있으며 이는 MySQL에서 SQL 문으로 실행됩니다. 🎜rrreee🎜result.RowsAffected()를 사용하여 결과 집합에서 영향을 받은 행 수를 가져오고 이 값을 사용하여 콘솔에 업데이트된 데이터 수를 인쇄할 수 있습니다. 🎜🎜🎜Summary🎜🎜🎜이 글에서는 Go 언어를 이용한 MySQL 데이터베이스의 기본 쿼리 연산을 소개했습니다. 표준 라이브러리 database/sql 및 타사 MySQL 드라이버를 사용하여 연결을 설정하고 데이터를 쿼리하는 방법을 배웠습니다. 또한 db.Exec() 함수를 사용하여 MySQL 데이터베이스에 데이터를 삽입하는 방법도 배웠습니다. 이러한 개념은 Go에서 효율적이고 안정적인 서버 애플리케이션을 구축하는 데 중요한 부분이며 현대 소프트웨어 엔지니어링에 필수적인 기술입니다. 🎜

위 내용은 golang에서 mysql 데이터를 조작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.