NodeJS+Mysql以及连接池使用记录··

最近写了个站用的是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 链接的详情
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值