Go语言介绍以及如何在Go语言中操作MySQL数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: Go语言介绍以及如何在Go语言中操作MySQL数据库

今天给大家介绍一下Go语言,以及实现MySQL数据库的操作示例,希望对大家能有所帮助!


一、Go语言介绍

Go语言,也称为Golang,是由Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。以下是Go语言的一些主要特点:


二、Go语言特点

语法简洁:摒弃了一些复杂的编程概念和冗余的语法,容易学习


高效性能:采用的静态编译和垃圾回收机制,实现了高效的内存管理


并发支持:Go语言是为并发编程而设计的,原生支持goroutine和channel


强大的标准库:Go语言拥有丰富的标准库


社区活跃:Go语言的社区非常活跃,有着庞大的开发者群体


三、  Go语言应用场景

服务器端开发:适合构建高性能的服务器端应用程序。因为Go语言具有轻量级的协程(goroutine)和高效的并发编程机

制。例如谷歌、Dropbox和Netflix等。


网络编程:适合构建Web服务器、微服务、网络爬虫、实时通信系统等。目前Go语言成为开发高负载网络应用的首选语言。


云计算:Go语言的轻量级和快速编译的特点使得它非常适合于构建云原生应用。例如Docker和Kubernetes等。


系统编程:适合成为开发操作系统、驱动程序和嵌入式系统。


工具开发:很多工具和框架都选择使用Go语言进行开发。例如,Docker、Etcd、InfluxDB和Prometheus等工具。


人工智能和大数据分析:Go语言的并发编程模型和内存管理机制使得它可以高效地处理大规模数据和复杂计算任务。


四、Go语言环境安装

安装Go语言环境,首先官网下载WindowsGo语言安装包

https://golang.google.cn/dl/


安装之后,cmd运行命令检查环境是否安装成功。


五、Go语言实现Mysql数据库的增删概啥

安装操作数据库依赖Go-MySQL-Driver

Go-MySQL-Driver是Go语言官方推荐的MySQL驱动, 是Go语言中使用MySQL的最佳选择

go get -u github.com/go-sql-driver/mysql

可能会报如下错误:


原因


GO111MODULE 是 Go 1.11 引入的新版模块管理方式。


GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto


win10环境下需要执行如下命令:


go env -w GO111MODULE=auto


然后重新执行安装命令


go get -u github.com/go-sql-driver/mysql


如果下载的时候报错


connectex: A connection attempt failed because the connected party did not p


直接进入电脑的环境变量设置国内镜像地址


新建环境变量GOPROXY


值为

点击确定后,重启命令行窗口,然后执行下载命令


代码实现

package main

import (

  "database/sql"
  "fmt"
  "log"

  _ "github.com/go-sql-driver/mysql"

) 
/*
*获取mysql数据库版本
*/
func showMysqlVersion() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2?charset=utf8")
if err != nil {
log.Fatal(err)
}
db.Ping()
defer db.Close()

var version string

errt2 := db.QueryRow("SELECT VERSION()").Scan(&version)

if errt2 != nil {
log.Fatal(errt2)
}

fmt.Println(version)

}
/*
*查询数据测试
*/
func queryTest() {
// 设置数据库连接信息
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
if err != nil {
log.Fatal(err)
}
defer db.Close()

// 执行查询
rows, err := db.Query("SELECT id, name, age FROM t_user")
if err != nil {
log.Fatal(err)
}
defer rows.Close()

// 遍历查询结果
for rows.Next() {
var id int
var name string
var age int
if err := rows.Scan(&id, &name, &age); err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}

/*
*插入数据测试
*/
func insertTest() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
db.Ping()
defer db.Close()

if err != nil {
fmt.Println("connect DB error !")
log.Fatalln(err)
}

_, err2 := db.Query("INSERT INTO t_user ( `name`, `address`, `age`) VALUES('小刘','广东',35)")
if err2 != nil {
log.Fatal(err2)
}
fmt.Println("数据插入成功")

}
/*
*数据更新测试
*/
func updateTest() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
db.Ping()
defer db.Close()

if err != nil {
fmt.Println("connect DB error !")
log.Fatalln(err)
}

_, err2 := db.Query("update t_user set name='小明2' where id=1 ")
if err2 != nil {
log.Fatal(err2)
}

fmt.Println("数据更新成功")

}

/*
*数据更新测试
*/
func delTest() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
db.Ping()
defer db.Close()

if err != nil {
fmt.Println("connect DB error !")
log.Fatalln(err)
}

_, err2 := db.Query("delete from t_user where id=2 ")
if err2 != nil {
log.Fatal(err2)
}

fmt.Println("数据删除成功")

}

func main(){
delTest()
updateTest();
//insertTest()
queryTest()
showMysqlVersion()
}

运行效果如下图

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
SQL 关系型数据库 MySQL
go 通过sql操作mysql
go 通过sql操作mysql
14 1
|
9天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之同步MySQL数据并EP(复杂事件处理)时,编译报错,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
9天前
|
存储 自然语言处理 关系型数据库
✅生产问题之Emoji表情如何操作存储,MySQL是否支持
MySQL支持存储Emoji表情,需使用UTF8MB4编码。UTF8MB3,MySQL早期的UTF-8实现,不支持部分Unicode字符包括Emoji,已被弃用。推荐使用UTF8MB4,它支持全部Unicode字符。转换时,现有UTF8MB3表需转换为UTF8MB4,列和表都需设置相应字符集。
|
12天前
|
SQL 关系型数据库 MySQL
MySQL数据库——事务操作-begin-commit-rollback
MySQL数据库——事务操作-begin-commit-rollback
11 1
|
21小时前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL(三)数据库表的查询操作【重要】
经验大分享:MySQL(三)数据库表的查询操作【重要】
|
2天前
|
关系型数据库 MySQL 数据库
Mysql数据表操作CRUD
Mysql数据表操作CRUD
7 0
|
2天前
|
关系型数据库 MySQL 数据库
Mysql数据库操作CRUD
Mysql数据库操作CRUD
8 0
|
9天前
|
Java 关系型数据库 流计算
实时计算 Flink版操作报错合集之配置cats进行从MySQL到StarRocks的数据同步任务时遇到报错,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
295 0
|
9天前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之下载了mysql的cdc的demo,在本地调试时,报错:找不到这个包,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
101 0
|
12天前
|
SQL 关系型数据库 MySQL
MySQL单表操作学习DDL_DML_DQL语句
MySQL单表操作学习DDL_DML_DQL语句
13 0