mysql学习
环境准备:
所有软件: datagrip(可视化)或者终端操作(语句)
环境: Centos7 mysql5.7
username:mysql_nj_jay_com
password:6435426njnj
ip:47.95.1.229
port:3306
database:mysql_nj_jay_com
连接数据库
-
终端连接
mycli -umysql_nj_jay_com -h47.95.1.229 -p6435426njnj
mycli是一个终端连接工具 可以自动补全
-
golang连接
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "os" "strings" ) var ( username = "mysql_nj_jay_com" password = "6435426njnj" ip = "47.95.1.229" port = "3306" database = "mysql_nj_jay_com" ) func connect() (*sql.DB, error) { path := strings.Join([]string{username, ":", password, "@(", ip, ":", port, ")/", database}, "") db, err := sql.Open("mysql", path) if err != nil { return db, err } defer db.Close() if err = db.Ping(); err != nil { return db, err } return db, nil } func main() { //连接数据库 _, err := connect() if err != nil { fmt.Println("连接失败") os.Exit(0) } fmt.Println("连接成功") }
mysql数据库常见操作
mysql数据类型
# 创建数据库
create database learnsql;
# 删除数据库
drop database learnsql;
# 使用golang
//只执行操作 查询的结果的话用其他的
db.Exec("sql语句")
# 使用数据库
use database;
# 创建数据表(建议使用datagrip完成)
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 删除数据表
drop TABLE tablename;
# 插入数据
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
# 查询数据
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
eg:
select id, name from test where id >=3 LIMIT 3 OFFSET 1;
//golang
func QueryTable(db *sql.DB) {
QueryData := `SELECT *FROM test;`
rows, err := db.Query(QueryData)
if err != nil {
fmt.Println(err)
}
for rows.Next() {
var id int
var name string
var price float64
if err := rows.Scan(&id, &name, &price); err != nil {
fmt.Println(err)
}
fmt.Printf("%-2d\t%-10s\t%-5f\n", id, name, price)
}
}
# WHERE语句的使用
= != > < >= <= 用来过滤数据的语句
# UPDATE更新
update test set name='dww' where id=5;
#DELETE删除表中的数据
delete from test where id=5;
# LIKE子句
SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
condiction(匹配 % _ [] [^])
# UNION
用于连接两个以上的select语句的结果组合到一个结果集合中
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
#排序
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
# 分组
GROUP BY 语句根据一个或多个列对结果集进行分组
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数
# 正则表达式
用的时候查就行
# mysql事务
MYSQL 事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT来实现
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交
# alter
当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令
# MySQL 索引
添加索引 提高检索速度
# 临时表
只在当前连接创建
# 复制表
完全的复制mysql的数据表
# 运算符和函数
用再查
总结
跟命令行有点类似
多用才熟悉