首页 问答 文章
登陆
登陆 注册新账号
注册
已有账号登陆
golang  mysql操作
2019-02-28 18:23:27.0
 
import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)
 
func main() {
    insert()
}
 
//插入demo
func insert() {
    db, err := sql.Open("mysql", "root:/test?charset=utf8")
    checkErr(err)
 
    stmt, err := db.Prepare(`INSERT user (user_name,user_age,user_sex) values (?,?,?)`)
    checkErr(err)
    res, err := stmt.Exec("tony", 20, 1)
    checkErr(err)
    id, err := res.LastInsertId()
    checkErr(err)
    fmt.Println(id)
}
 
//查询demo
func query() {
    db, err := sql.Open("mysql", "root:/test?charset=utf8")
    checkErr(err)
 
    rows, err := db.Query("SELECT * FROM user")
    checkErr(err)
 
    //普通demo
    //for rows.Next() {
    //    var userId int
    //    var userName string
    //    var userAge int
    //    var userSex int
 
    //    rows.Columns()
    //    err = rows.Scan(&userId, &userName, &userAge, &userSex)
    //    checkErr(err)
 
    //    fmt.Println(userId)
    //    fmt.Println(userName)
    //    fmt.Println(userAge)
    //    fmt.Println(userSex)
    //}
 
    //字典类型
    //构造scanArgs、values两个数组,scanArgs的每个值指向values相应值的地址
    columns, _ := rows.Columns()
    scanArgs := make([]interface{}, len(columns))
    values := make([]interface{}, len(columns))
    for i := range values {
        scanArgs[i] = &values[i]
    }
 
    for rows.Next() {
        //将行数据保存到record字典
        err = rows.Scan(scanArgs...)
        record := make(map[string]string)
        for i, col := range values {
            if col != nil {
                record[columns[i]] = string(col.([]byte))
            }
        }
        fmt.Println(record)
    }
}
 
//更新数据
func update() {
    db, err := sql.Open("mysql", "root:/test?charset=utf8")
    checkErr(err)
 
    stmt, err := db.Prepare(`UPDATE user SET user_age=?,user_sex=? WHERE user_id=?`)
    checkErr(err)
    res, err := stmt.Exec(21, 2, 1)
    checkErr(err)
    num, err := res.RowsAffected()
    checkErr(err)
    fmt.Println(num)
}
 
//删除数据
func remove() {
    db, err := sql.Open("mysql", "root:/test?charset=utf8")
    checkErr(err)
 
    stmt, err := db.Prepare(`DELETE FROM user WHERE user_id=?`)
    checkErr(err)
    res, err := stmt.Exec(1)
    checkErr(err)
    num, err := res.RowsAffected()
    checkErr(err)
    fmt.Println(num)
}
 
func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

唯一约束,可以给单独一个字段设置,即表示在多条记录中,该字段的值不可出现重复。也可以设置多个字段组合起来要求唯一,即在多条记录中,不可出现多个字段值同时重复。设置方式如下: 创建表时设置:

CREATE TABLE `t_user` (
      `Id` int(11) NOT NULL AUTO_INCREMENT,  -- 自增
      `name` varchar(50) NOT NULL unique,  -- 唯一性约束
      `phone` varchar(18) NOT NULL,  
      `mail` varchar(18) NOT NULL,  
       UNIQUE KEY (`phone`,`mail`), -- 联合唯一性约束
       PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

创建表之后设置:

ALTER TABLE `t_user` ADD UNIQUE KEY(`name`);  -- 唯一约束
ALTER TABLE `t_user` ADD UNIQUE KEY(`phone`,`mail`); -- 联合唯一约束```
热门文章
1
input 上传第二次不能选择同一文件
2
有时候操作系统的时间与pg的时间不一致
3
input="file" 浏览时只显示指定文件类型 xls、xlsx、csv
4
java stream 转二维结构为树状结构
5
java Object和Map转化
6
java Object和Map转化
7
java label
8
让Node.js项目实现热部署,修改文件避免重启
9
golang  mysql操作
10
什么是ORM?
最新文章
1
postgresql数据库
2
Mac 启动加载文件位置(可设置环境变量)
3
什么是ORM?
4
微信小程序自定义组件设置回调方法
5
java stream 转二维结构为树状结构
6
正则表达式
7
golang  mysql操作
8
利用Opencv实现简单的图片切割(JAVA)
9
PostgreSQL JSON 数据库
10
linux 自动运行脚本
热门标签
mac
java
jvm
微信小程序
小程序
自定义组件
回调
回调方法
golang
postgresql