> 데이터 베이스 > MySQL 튜토리얼 > golang이 mysql 데이터를 작동하는 방법

golang이 mysql 데이터를 작동하는 방법

王林
풀어 주다: 2023-05-27 15:47:13
앞으로
1824명이 탐색했습니다.

MySQL이란?

오라클의 후원으로 개발된 MySQL은 인터넷 인프라에서 널리 사용되는 관계형 데이터베이스 관리 시스템입니다. 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()

따라서 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()를 사용하여 결과 집합에서 영향을 받은 행 수를 가져오고 이 값을 사용하여 콘솔에 업데이트된 데이터 수를 인쇄할 수 있습니다. 🎜

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

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿