Skip to content

项目中使用 mysql

安装配置 mysql

1. 安装依赖

shell
npm i mysql

2. 配置 mysql 模块

js
// 导入mysql模块
const mysql = require("mysql");
// 建立与mysql数据库的链接
const db = mysql.createPool({
  host: "127.0.0.1", //数据库IP地址
  user: "root", //登录数据库的账号
  password: "123456", //登录数据库的密码
  database: "my_db", //要操作的数据库
});

3. 测试 mysql 能否正常工作

js
db.query("select 1", (err, results) => {
  if (err) {
    return console.log(err.message);
  }
  // 只要打印出[RowDataPacket:{'1':1}]的结果,表示数据库连接正常
  console.log(results);
});

使用 mysql 模块操作数据库

1. 查询数据

js
db.query("SELECT * from users", (err, results) => {
  if (err) return console.log(err.message);
  console.log(results);
});

2. 插入数据

js
// 要插入的数据对象
const user = { name: "jack", password: "admin123" };
// 定义要执行的SQL语句,?为占位符
const sqlStr = "insert into users (name,password) values (?,?)";
// 数组内部依次指定?的具体值
db.query(sqlStr, [user.name, user.password], (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("插入数据成功");
  }
});

3. 插入数据便捷方式

当数据对象每个属性和数据表字段一一对应时

js
// 数据对象
const user = { name: "jack", password: "admin123" };
const sqlStr = "indert into users set ?";
// 直接将数据对象当做占位符的值
db.query(sqlStr, user, (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("插入数据成功");
  }
});

4. 更新数据

js
// 数据对象
const user = { name: "jack", password: "admin123", id: 4 };
// 待执行SQL语句
const sqlStr = "update users set name=?, password=? where id=? ";
// 执行SQL语句,指定占位符数值
db.qurey(sqlStr, [user.name, user.password, user.id], (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("修改数据成功");
  }
});

5. 更新数据便捷方式

当数据对象属性值和数据库表的字段对应时

js
// 数据对象
const user = { name: "jack", password: "admin123", id: 4 };
// 待执行SQL语句
const sqlStr = "update users set ? where id=?";
// 执行SQL语句,指定占位符
db.query(sqlStr, [user, user.id], (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("修改数据成功");
  }
});

6. 删除数据

js
// 待执行SQL语句
const sqlStr = "delete from users where id=?";
// 当有多个占位符时,必须使用数组依次指定占位数值
// 当只有一个占位符时,可以省略数组
db.query(sqlStr, 7, (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("删除数据成功");
  }
});

7. 标记删除

不正真删除数据,通过 update 更新数据的 status 模拟删除

js
const sqlStr = "update users set status=1 where id=?";
// 更新数据状态,并未正真删除
db.query(sqlStr, 6, (err, results) => {
  if (err) return console.log(err.message);
  if (results.affectedRows === 1) {
    console.log("删除成功");
  }
});