文章目录
MySQL命令行操作及Golang代码
.
一 Golang操作
1 引入包和驱动
"database/sql"
_ "github.com/go-sql-driver/mysql"
2 连接数据库
db, err := sql.Open("mysql", "dbusername:dbpassword@/dbname?charset=utf8")
if err != nil {
fmt.Println(">>> fail to connect to db <<<")
}
defer db.Close()
fmt.Println(">>> succeed to connect to db <<<")
3 插入数据
_, err = db.Exec("INSERT INTO msg(username,password,phonenum,question,answer)VALUES(?,?,?,?,?)", username, password, phonenum, question, answer)
4 查询数据是否存在
err = db.QueryRow("select *from msg where username=? and phonenum=?", username, phonenum).Scan(&username, &password, &phonenum, &question, &answer)
5 修改数据
stmt, _ := db.Prepare("UPDATE msg SET password=? WHERE username=?")
cg, _ := stmt.Exec(newpwd, username)
num, err := cg.RowsAffected()//num是影响行数
6 删除数据
stmt, _ := db.Prepare("DELETE FROM msg WHERE username=?")
cg, _ := stmt.Exec(username)
_, err := cg.RowsAffected()
7 通过已知项查其他项
rows, err := db.Query("SELECT passage FROM passage WHERE title = ?", title)
if err != nil {
log.Fatal(err)
}
for rows.Next() {
if err := rows.Scan(&passage); err != nil {
log.Fatal(err)
}
c.String(http.StatusOK, passage)
//因为这里在循环内,所以搜到一个则传一个,要想一次性传,定义字符串来叠加
fmt.Println(passage)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
一个用户名对应多篇文章,一次传给前端,如下:
rows, err := db.Query("SELECT title FROM passage WHERE author = ?", author)
if err != nil {
log.Fatal(err)
}
var tt string
for rows.Next() {
if err := rows.Scan(&title); err != nil {
log.Fatal(err)
}
fmt.Println(title)
tt = tt + title + "#" //这个用来累计字符串,最后只用一次传输
}
var ttt string = strings.TrimRight(tt, "#")
c.String(http.StatusOK, ttt)
if err := rows.Err(); err != nil {
log.Fatal(err)
}
二 MySQL操作
1 登录MySQL
2 显示数据库
show databases;
3 新建数据库
create database user_1;
4 删除数据库
drop database dbname;
5 打开数据库
use dbname;
6 在数据库中建表
7 查看数据库表结构
describe tablename;
8 查看数据库表详细数据
select * from tablename;
9 删除数据库表
drop table tablename;
10 清空数据库表
truncate tablename;
11在存在的表格中加一列
最后一列
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;
指定一列的后面一列
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null after COLUMN_NAME;
第一列
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null first;
12 ORDER BY 关键词排序语句
13 考虑表中参数的设置
mysql> create table user_table
-> (
-> userId varchar(32) not null unique,
-> passwd varchar(32) not null,
-> score int(4) not null,
-> problem_solved_number int(2) not null,
-> tel varchar(11) not null unique,
-> Grade int(1) not null
-> );
Query OK, 0 rows affected, 3 warnings (0.04 sec)