// 1、导入mysql模块const mysql =require("mysql2");// 2、建立与mysql 数据库的链接const db = mysql.createPool({host:"127.0.0.1",// 数据库的ip地址user:"root",// 登录数据库的账号password:"Xiewei5036921.",// 登录数据库的密码database:"my_db_01",//指定要操作的数据库});
三、测试mysql 能否正常工作
db.query("select * from user",(err, results)=>{// mysql 模块工作期间报错了if(err)return console.log(err);// 能够成功的执行sql语句console.log(results);});
四、使用
4.1、插入数据
// 1、要插入到users表中的数据对象const user ={ username:"xc", password:"456456"};// 2、待执行的SQL 语句,其中英文的 ? 表示占位const sqlStr ="insert into user (username,password) values(?,?)";// 3、使用数组的形式,依次为 ? 占位符指定具体的值
db.query(sqlStr,[user.username, user.password],(err, results)=>{if(err)return console.log(err.message);// 注意:如果执行的是insert into ,update delete语句,则results 是个对象// 可以通过affectedRows 属性,来判断是否插入数据成功if(results.affectedRows ===1) console.log("插入数据成功");});
4.2、便携插入方式 用insert into 表名 set ?
// 1、要插入的user表中的数据对象const user ={ username:"xc", password:"456456"};// 2、待执行的sql语句,其中英文的?表示占位符const sqlStr ="insert into user set ?";// 3、直接将数据对象当作占位符的值
db.query(sqlStr, user,(err, results)=>{if(err)return console.log(err.message);// 注意:如果执行的是insert into ,update delete语句,则results 是个对象// 可以通过affectedRows 属性,来判断是否插入数据成功if(results.affectedRows ===1) console.log("插入数据成功");});
4.3、更新数据
// 1、要更新到users表中的数据对象const user ={ username:"xc", password:"456456",id:1};// 2、待执行的SQL 语句,其中英文的 ? 表示占位const sqlStr ="update user set username=?,password=? where id =?";// 3、使用数组的形式,依次为 ? 占位符指定具体的值
db.query(sqlStr,[user.username, user.password,user.id],(err, results)=>{if(err)return console.log(err.message);// 注意:如果执行的是insert into ,update delete语句,则results 是个对象// 可以通过affectedRows 属性,来判断是否插入数据成功if(results.affectedRows ===1) console.log("插入数据成功");});
4.4、便携更新方式 用update 表名 set ? where id = ?
// 1、要更新的user表中的数据对象const user ={ username:"444321", password:"456456", id:5};// 2、待执行的SQL 语句,其中英文的 ? 表示占位const sqlStr ="update user set ? where id=?";// 3、使用数组的形式,依次为 ? 占位符指定具体的值// 注意 有几个? 第二个参数就要穿几个值
db.query(sqlStr,[user, user.id],(err, results)=>{if(err) console.log(err.message);// 注意:如果执行的是insert into ,update delete语句,则results 是个对象// 可以通过affectedRows 属性,来判断是否插入数据成功if(results.affectedRows ===1){console.log("更新成功");}else{console.log("失败");}});
4.5、 删除数据 不建议使用 一般用标记删除
// 删除数据// 1、待执行的SQL 语句,其中英文的 ? 表示占位const sqlStr ="delete from user where id=?";// 2、使用数组的形式,依次为 ? 占位符指定具体的值
db.query(sqlStr,7,(err, results)=>{if(err)return console.log(err.message);// 注意:如果执行的是insert into 插入语句,则results 是个对象// 可以通过affectedRows 属性,来判断是否插入数据成功if(results.affectedRows ===1) console.log("删除数据成功");});
4.6、标记删除 比如status 来代表禁用 使用
// 1、待执行的SQL 语句,其中英文的 ? 表示占位const sqlStr ="update user set status = ? where id = ?";db.query(sqlStr,[1,5],(err, results)=>{if(err)return console.log(err.message);// 可以通过affectedRows 属性,来判断是否删除if(results.affectedRows ===1) console.log("标记删除成功");});
确定执行的优先级(Prioritizing what to work on : Spam classification example)
在建立学习系统前,我们不仅要梳理框架,更重要的是我们要弄清楚有哪些事情是要优先做的,这可以帮我们节约大量的时间。
以垃圾邮件为例,按照之前…