使用mysql模块对数据库增删改查,node学习笔记。

// 1.导入mysql数据库模块
const mysql = require("mysql");
// 1.1_建立与mysql数据库的连接
const db = mysql.createPool({
  // 1.1.1_配置对象
  host: "127.0.0.1", //数据库的IP地址
  user: "root", //登录数据库的账号
  password: "****123456", //登录数据库的密码
  database: "****01", //指定要操作的数据库
});

// 1.2_测试mysql模块是否正常工作
// select 1 这是一段没有任何意义的sql语句,只作测试使用
/* db.query("select 1", (err, results) => {
  // 1.2.1_如果发生了err说明有问题,然后打印问题结束代码
  if (err) return console.log(err.message);
  // 1.2.2_如果没有报错则打印results,如果打印了[ RowDataPacket { '1': 1 } ],则说明工作正常
  console.log(results);
}); */

// 1.3_查询users表中的所有数据
// 1.3.1_可以先把sql语句用一个变量装起来
/* const sqlStr = "select * from users";
// 1.3.2_执行查询语句
db.query(sqlStr, (err, results) => {
  // 1.3.2.1_如果发生错误则打印err
  if (err) return console.log(err.message);
  // 1.3.2.2_如果成功则打印results结果
  console.log(results);
}); */

/* // 1.4_向users表中新增一条新的数据,其中username的值 Sqider-Man,password的值为pcc123
//1.4.1_先声明一个变量把需要的数据装起来准备
const user = { username: "sqider-man3", password: "pcc123" };
//1.4.2_再声明一个变量把需要使用的SQL插入语句装起来,待用
//1.4.2.1_需要在语句中使用英文格式的?号占位,这对应前面的列依次占位
const sqlStr = "insert into users (username , password) values (?,?)";
// 1.4.3_执行SQL语句
// 1.4.3.1_这里我们需要放一个数组,为占位的SQL语句进行填充,实现自动填充用户修改的任意值
//14.3.2_下方数组是填充到上方定义的SQL语句中使用?号的占位
db.query(sqlStr, [user.username, user.password], (err, results) => {
  // 1.4.4_执行SQL语句时判断是否发生了错误,如果错误则打印错误到控制台
  if (err) return console.log(err.message);
  // 1.4.5_判断数据是否插入成功,判断results的affectedRows是否等于1,是则告诉控制台插入成功
  //   1.4.5.1_注意:如果执行的是语句insert into 插入语句,则results是一个对象,之前我们使用查询语句时results是数组的形式
  // 1.4.5.2_可以通过sffectedRwos属性,来判断是否插入成行,sffectedRwos则来自results对象中
  if (results.affectedRows === 1) {
    //1.4.6_注意:如果报错提示ER_DUP_ENTRY: Duplicate entry 'sqider-man' for key 'users.username_UNIQUE'
    //1.4.6.1_这个报错信息说明数据库出现的用户名重复无法插入,更换用户名即可
    console.log("数据插入成功!");
  }
}); */

/* // 1.5_更便捷的向数据中插入数据
// 1.5_向users表中新增一条新的数据,其中username的值 Sqider-Man,password的值为pcc123
//1.5.1_先声明一个变量把需要的数据装起来准备
const user = { username: "sqider-man5", password: "pcc123", status: 1 };
//1.5.2_再声明一个变量把需要使用的SQL插入语句装起来,待用
//1.5.2.1_需要在语句中使用英文格式的?号占位,这样的占位方式,会自动根据插入的数据对象,填充对应的列,不用我们根据数据有很多少对应数据库的列手动写代码,这会累
const sqlStr = "insert into users set ?";
// 1.5.3_执行SQL语句
// 1.5.3.1_这里我们只需要把数据对象user放进去,为占位的SQL语句进行自动填充,实现自动填充用户修改的任意值
//1.5.3.2_下方装着数据对象的user是填充到上方定义的SQL语句中使用?号的占位,会自动按照数据给的多个列自动对应数据库填充这些列的值
db.query(sqlStr, user, (err, results) => {
  // 1.5.4_执行SQL语句时判断是否发生了错误,如果错误则打印错误到控制台
  if (err) return console.log(err.message);
  // 1.5.5_判断数据是否插入成功,判断results的affectedRows是否等于1,是则告诉控制台插入成功
  //   1.5.5.1_注意:如果执行的是语句insert into 插入语句,则results是一个对象,之前我们使用查询语句时results是数组的形式
  // 1.5.5.2_可以通过affectedRows属性,来判断是否插入成行,affectedRows则来自results对象中
  if (results.affectedRows === 1) {
    //1.5.6_注意:如果报错提示ER_DUP_ENTRY: Duplicate entry 'sqider-man' for key 'users.username_UNIQUE'
    //1.5.6.1_这个报错信息说明数据库出现的用户名重复无法插入,更换用户名即可
    console.log("数据插入成功!");
  }
}); */

/* // 1.6_更新数据库的数据
// 1.6.1_选择需要修改的数据id,选择需要修改的列名,设新的值
const user = { id: 8, username: "aa1", password: "000", status: 1 };
// 1.6.2_设一条SQL更新数据的语句
// 1.6.2.1_UPDATE 表名称 SET 设列名称且为新值占位 WHERE 为需要修改的ID占位
//1.6.2.2_注意⚠️:如果SQL语句不加WHERE条件的话就不知道更新数据库的哪条数据,会导致数据库所有数据都被更新
const sqlStr = "UPDATE users SET username=?,password=? WHERE id=?";
//1.6.3_执行SQL语句
db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
  //1.6.3.1_判断是否更新成功,否则打印错误信息到控制台
  if (err) return console.log(err.message);
  //1.6.3.2_从results对象中的affectedRows属性是否等于1,是则表示更新成功,更新成功则给控制台打印这个好消息
  if (results.affectedRows === 1) {
    console.log("更新数据成功!");
  }
}); */

/* // 1.7_更新数据的便捷方式
// 1.7.1_定义需要更新的数据对象
const user = { id: 8, username: "abc", password: "abc1234" };
// 1.7.2_设更便捷的SQL语句
const sqlStr = "UPDATE users SET ? WHERE id=?";
// 1.7.3_执行SQL语句
// 1.7.3.1_前面SQL语句中有两个占位,我们需要以数组的形式依次对应填充。
// 1.7.3.2_前面的占位可以对应匹配user对象的所有列名,后面的占位是一个WHERE限定条件指定的数据id防止数据库所有数据被更新。
db.query(sqlStr, [user, user.id], (err, results) => {
  // 1.7.4_判断是否发生err是则表示更新失败并且打印错误到控制台
  if (err) return console.log(err.message);
  // 1.7.5_判断results对象的affectedRows属性是否等于1,是则表示更新数据成功,且把消息打印到控制台
  if (results.affectedRows === 1) {
    console.log("更新数据成功!");
  }
}); */

/* // 1.8_删除数据
// 1.8.1_设删除数据的SQL语句
const sqlStr = "DELETE FROM users WHERE id=?";
// 1.8.2_设需要删除的数据id
const id = 11;
// 1.8.3_执行SQL语句
db.query(sqlStr, id, (err, results) => {
  // 1.8.3.1_判断是否删除失败
  if (err) return console.log(err.message);
  // 1.8.3.2_判断是否删除成功
  if (results.affectedRows === 1) {
    console.log("删除数据成功!");
  }
}); */

/* // 1.9_标记删除
// 1.9.1_真正的删除数据是很危险的无法恢复的,所谓标记删除就是给数据标记为删除的形式,而不是真正的删除,这是可以恢复的形式
// 1.9.2_我们可以使用SQL更新语句来实现标记,可以更新数据库status这个类似布尔值的数据来实现
db.query("UPDATE users SET status=? WHERE id=?", [1, 12], (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("标记删除成功!");
  }
});
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值