go语言学习-mysql
时间:2022-06-26
本文章向大家介绍go语言学习-mysql,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
mysql使用
sql语句
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`IsBoy` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
)
DEFAULT CHARSET=utf8;
sql语句使用
Query 返回的 rows,取完数据后需要调用 Close 来释放资源
package main
import (
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
var result sql.Result
//向数据库中插入一条数据
result, err = db.Exec("insert into person(name,age,IsBoy) values(?,?, ?)", "张三 ", 19, true)
if err != nil {
fmt.Println(err)
return
}
lastId, _ := result.LastInsertId()
fmt.Println("新插入的数据 ID 为", lastId)
var row *sql.Row
//返回一行数据
row = db.QueryRow("select * from person")
var name string
var id, age int
var isBoy bool
//取数据进行显示
err = row.Scan(&id, &name, &age, &isBoy)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(id, "t", name, "t", age, "t", isBoy) //再插入一条数据
result, err = db.Exec("insert into person(name,age,IsBoy) values(?, ?, ?)", "王红", 18, false)
fmt.Println(" == == == == == == == == == == = ")
var rows *sql.Rows
rows, err = db.Query("select * from person")
if err != nil {
fmt.Println(err)
return
}
for rows.Next() {
var name string
var id, age int
var isBoy bool
rows.Scan(&id, &name, &age, &isBoy)
fmt.Println(id, "t", name, "t", age, "t", isBoy)
}
rows.Close()
//最后,清空表
db.Exec("truncate table person")
}
对 SQL 语句进行预处理
package main
import (
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
"math/rand"
"time"
)
func main() {
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
var smt *sql.Stmt
smt, err = db.Prepare("insert into person(name,age,IsBoy) values(?,?, ?)")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("开始插入数据....", time.Now())
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := 0; i < 10000; i++ {
_, err = smt.Exec(fmt.Sprintf("张%d", r.Int()), r.Intn(50), r.Intn(100) % 2)
if err != nil {
fmt.Println(err)
return
}
}
fmt.Println("数据插入完成!", time.Now())
}
事务
package main
import (
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db,err:=sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
var trans *sql.Tx
trans, err = db.Begin()
if err != nil {
fmt.Println(err)
return
}
result,err := trans.Exec("insert into person(name,age,IsBoy)values('张三',99,false)")
if err != nil {
fmt.Println(err)
trans.Rollback()
}
fmt.Println(result.LastInsertId())
trans.Commit()
//最后,清空表
db.Exec("truncate table person")
}
- JAVA中使用Jedis操作Redis
- Tomcat搭建文件服务器
- Windows下SLmail邮件服务器缓冲区溢出理解及实验
- java使用mina和websocket通信
- 【机器学习】10 种机器学习算法的要点
- 写一个BASIC认证的https协议
- java发送邮件功能,以发送qq邮件为例
- spring boot加载复杂的yml文件获取不到值的问题
- JUC包下的CountDownLatch,CyclicBarrier,Semaphore
- java队列,ArrayBlockingQueue
- 多线程使用wait和notify做生产者消费者模型导致线程全部假死
- 偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
- java 多线程暂停与恢复:suspend,resume
- ArrayList底层实现
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- python第三十二课——队列
- python第三十四课——1.匿名函数的定义和使用
- python第三十四课——2.匿名函数配合容器函数的使用
- 专家专栏|使用agent2自定义插件采集通过MQTT协议发送的数据
- Linux系统双网卡绑定配置教程
- python第三十五课——生成器
- python第三十六课——1.可迭代对象
- Linux系统Shell编程——脚本编写思路与过程
- python第三十六课——2.迭代器对象
- python第三十七课——模块
- Linux系统MySQL数据库主从同步实战过程
- 最火的java8新特性:Lambda 表达式
- python第三十九课——面向对象(二)之设计类
- python第三十九课——面向对象(二)之初始化属性
- LVS服务DR模式安装布署过程