最近写了个站用的是mysql数据库,发现资料太少了,在此总结下简单用法。
1 安装mysql软件,开启本地mysql数据库的服务
1.可以使用phpstudy,upupw,wamp集成软件直接开启mysql服务,
2.手动开启,自行下载mysql安装包,进入安装目录MySQL\bin下命令行输入
mysqld --install,安装成功会有提示 'Service successfully installed'
net start mysql 正常启动
net stop mysql 关闭
mysql -u root -p 链接数据库
例如:mysql -h127.0.0.1 -uroot -proot 注:u与root之间可以不用加空格
可以正常进入到mysql -- OK!
2 安装nodejs的 mysql,npm install mysql -S,开启连接
const mysql = require("mysql")
//配置sql参数
const pool = mysql.createPool({
host: 'localhost', //IP本地
user: 'root',//用户
password: 'root',//密码
database: 'web',//数据库
port: 3306, //端口
multipleStatements:true //是否开启多条sql语句查询,因项目需要开启,默认为false~
});
//创建sql连接池
const query = (sql,options,callback) => {
pool.getConnection((err,connection) =>{
if (err) throw err; //链接不成功!
connection.query(sql,options,(err,results,fields) =>{
//释放连接
connection.release();
if (err) throw err;
//事件驱动回调
callback(err,results,fields);
});
});
};
3.mysql的增删改查
.1.insert增加
INSERT INTO user(username,password,dateTime) VALUES('aaabbb','qwe123','2018-04-06')
在user表 username 字段 password 字段 dateTime字段 增加一条数据'aaabbb','qwe123','2018-04-06'
query(INSERT INTO user(username,password,dateTime) VALUES('aaabbb','qwe123','2018-04-06'), (err, result, fields) => {
if (err) return err
console.log(result)
})
也可以提取方法,作为参数对应 data为对应的values
let userInsert = `INSERT INTO user(username,password,dateTime) VALUES(?,?)`;
query(userInsert , ['aaabbb','qwe123','2018-04-06'], (err, result, fields) => {
if (err) return err
console.log(result)
})
2.delete删除
let userDel = `DELETE FROM user WHERE username = 'aaabbb'`;
3.update修改
根据用户名username 查询密码, 或者多个结果
`UPDATE user SET password= ? WHERE username= ?`,
`UPDATE user SET password= ? , dateTime= ? WHERE username= ?`
4.select查询
1,根据用户名查询结果
`SELECT * FROM user WHERE username= ?`,
2,查询user表的时间结果并且按最新时间排序
`SELECT * FROM user ORDER BY dateTime DESC `,
3,双重查询,适用于搜索,
第一条select查询dateTime的结果有多少条总记录,
第二条select查询匹配的时间结果(WHERE dateTime)、按匹配的时间结果排序(ORDER BY dateTime DESC )、结果的分页及条数(LIMIT )!
`
SELECT * FROM user WHERE dateTime =?;
SELECT* FROM user WHERE dateTime = ? ORDER BY dateTime DESC LIMIT ?,?
`
db是一条语句,用的是ES6的单引号符号拼接....
query(db, data, (err, result , fields) => {
if (err) return res.json({ "code": 1, "msg": '数据库异常' })
console.log(result[0]) //第一条select的结果
console.log(result[1]) //第二条select的结果
})
4.双重查询,适用于分页功能
第一条select查询dateTime的结果有多少条总记录,
第二条select查询匹配的时间结果,并且取得分页及条数
`
SELECT * FROM user WHERE dateTime;
SELECT * FROM user ORDER BY dateTime DESC LIMIT ?,?
`
4.mysql的状态以及连接数量
mysqladmin -uroot -proot status 链接个数量
mysqladmin -uroot -proot processlist 链接的详情