Node.js中MySQL模块入门教程:从安装到基本使用全面解析,助力开发更稳定高效

1、在项目中操作数据库的步骤

  1. 安装操作 MySQL 数据库的第三方模块(mysql
  2. 通过 mysql 模块连接到 MySQL 数据库
  3. 通过 mysql 模块执行 SQL 语句

2、安装与配置 mysql 模块

1. 安装 mysql 模块

mysql 模块是托管于 npm 上的第三方模块。它提供了在 Node.js 项目中连接操作 MySQL 数据库的能力。 想要在项目中使用它,需要先运行如下命令,将 mysql 安装为项目的依赖包:

npm i mysql

2. 配置 mysql 模块

在使用 mysql 模块操作 MySQL 数据库之前,必须先对 mysql 模块进行必要的配置,主要的配置步骤如下:

// 1.导入 mysql 模块
const mysql = require('mysql')
// 2.建立与 MySQL 数据库的链接关系
const db = mysql.createPool({
  host: 'localhost',  // 数据库的 IP 地址
  user: 'root',       // 登录数据库的账号
  password: '123456', // 登录数据库的密码
  database: 'my_db'   // 指定要登录哪个数据库
})

3. 测试 mysql 模块能否正常工作

// 检测 mysql 模块能否正常工作
// 调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
db.query('select 1', (err, results) => {
  if (err) return console.log(err.message);
  // 只要能打印出 [ RowDataPacket { '1': 1 } ]的结果,就能证明数据库链接正常
  console.log(results);
})

3、使用 mysql 模块操作 MySQL 数据库

1. 查询数据

查询 users 表中所有的数据:

const sql = 'select * from users'
 db.query(sql, (err, results) => {
  // 查询失败
  if (err) return console.log(err.message);
  // 查询成功
  console.log(results, results[0].username);
})

2.插入数据

向 users 表中新增数据, 其中 username 为 Spider-Man,password 为 pcc321。示例代码如下:

// (1).要插入到users 表中的数据对象
const user = { username: 'Spider-Man', password: 'pcc321' }
// (2).待执行的 SQL 语句,其中英文的 ? 表示占位符
const sqlSrc = `insert into users (username,password) values(?,?)`
// (3).使用数据的形式,依次为 ? 占位符指定具体的值
db.query(sqlSrc, [user.username, user.password], (err, results) => {
  if (err) return console.log(err.message) // 失败
  if (results.affectedRows === 1) console.log('数据插入成功', results) // 成功
})

3.插入数据的便捷方式

向表中新增数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:

const user = { username: 'Spider-Man', password: 'pcc321' }
const sqlSrc = `insert into users set ?`
db.query(sqlSrc, user, (err, results) => {
  if (err) return console.log(err.message) // 失败
  if (results.affectedRows === 1) console.log('数据插入成功', results) // 成功
}) 

 4. 更新数据

可以通过如下方式,更新表中的数据:

// (1).要更新的数据对象
const uset = { id: 5, username: '小明', password: '000' }
// (2).要执行的 SQL 语句
const sqlStr = `update users set username=?,password=? where id=?`
// (3).调用 db.query() 执行 SQL 语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr, [uset.username, uset.password, uset.id,], (err, results) => {
  if (err) return console.log(err.message); // 失败
  if (results.affectedRows === 1) console.log('更新数据成功!'); // 成功
})

5. 更新数据的便捷方式

更新表数据时,如果数据对象的每个属性数据表的字段一一对应,则可以通过如下方式快速更新表数据 

const uset = { id: 5, username: '小王', password: '000' }
const sqlStr = `update users set ? where id=?`
db.query(sqlStr, [uset, uset.id,], (err, results) => {
  if (err) return console.log(err.message); // 失败
  if (results.affectedRows === 1) console.log('更新数据成功!'); // 成功
})

完整使用示例

创建 db.js

// 1.导入 mysql 模块
const mysql = require('mysql')
// 2.建立与 MySQL 数据库的链接关系
const db = mysql.createPool({
  host: 'localhost', // 数据库的 IP 地址
  user: 'root',      // 登录数据库的账号
  password: '', // 登录数据库的密码
  database: ''// 指定要登录哪个数据库
})

// 检测 mysql 模块能否正常工作
// 调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
db.query('select 1', (err, results) => {
  if (err) return console.log(err.message);
  // 只要能打印出 [ RowDataPacket { '1': 1 } ]的结果,就能证明数据库链接正常
  console.log(results);
})

// 向外共享 db 数据库连接对象
module.exports = db

在需要的地方导入使用

const db = require('../db.js')

2.基本的sql语句使用

// 导入配置好的 mysql 模块
const db = require('../db.js')

/* 
  1. 查询数据  --  查询 users 表中所有的数据:
   * 代表匹配全部   可以替换成你需要的列名称 比如:a,b,c
*/
const sql = 'select * from users'
 db.query(sql, (err, results) => {
  // 查询失败
  if (err) return console.log(err.message);
  // 查询成功
  console.log(results, results[0].username);
})

// 2. 插入数据  向 users 表中新增数据, 其中 username 为 Spider-Man,password 为 pcc321。示例代码如下:
// (1).要插入到users 表中的数据对象
const user = { username: 'Spider-Man', password: 'pcc321' }
// (2).待执行的 SQL 语句,其中英文的 ? 表示占位符
const sqlSrc = `insert into users (username,password) values(?,?)`
// (3).使用数据的形式,依次为 ? 占位符指定具体的值
db.query(sqlSrc, [user.username, user.password], (err, results) => {
  if (err) return console.log(err.message) // 失败
  if (results.affectedRows === 1) console.log('数据插入成功', results) // 成功
})


// 演示-插入数据的便捷方式
// 向表中新增数据时,如果数据对象(user)的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据
const user = { username: 'Spider-Man', password: 'pcc321' }
const sqlSrc = `insert into users set ?`
db.query(sqlSrc, user, (err, results) => {
  if (err) return console.log(err.message) // 失败
  if (results.affectedRows === 1) console.log('数据插入成功', results) // 成功
})

// 3.更新数据
// 可以通过如下方式,更新表中的数据:
// (1).要更新的数据对象
const uset = { id: 5, username: '小明', password: '000' }
// (2).要执行的 SQL 语句
const sqlStr = `update users set username=?,password=? where id=?`
// (3).调用 db.query() 执行 SQL 语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr, [uset.username, uset.password, uset.id,], (err, results) => {
  if (err) return console.log(err.message); // 失败
  if (results.affectedRows === 1) console.log('更新数据成功!'); // 成功
})

// 演示-更新数据的便捷方式
// 更新表数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速更新表数据:
const uset = { id: 5, username: '张三', password: '000' }
const sqlStr = `update users set ? where id=?`
db.query(sqlStr, [uset, uset.id,], (err, results) => {
  if (err) return console.log(err.message); // 失败
  if (results.affectedRows === 1) console.log('更新数据成功!'); // 成功
})



// 4. 删除数据
// 在删除数据时,推荐根据 id 这样的唯一标识,来删除对应的数据。示例如下
// (1).要执行的 SQL 语句
const sqlStr = `delete from users where id=?`
/* 
  (2).调用 db.query() 执行 SQL 语句的同时,为占位符指定具体的值
  注意:如果 SQL 语句中有多个占位符,则必须使用数组为每一个占位符指定具体的值
        如果 SQL 语句中只有一个占位符,则可以省略数组 
*/
db.query(sqlStr, 40, (err, results) => {
  if (err) return console.log(err.message) // 失败
  if (results.affectedRows === 1) console.log('删除数据成功') // 成功
})

/*  
   4.1标记删除
   使用 DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。
   所谓的标记删除,就是在表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除。
   当用户执行了删除的动作时,我们并没有执行 DELETE 语句把数据删除掉,而是执行了 UPDATE 语句,将这条数据对应
   的 status 字段标记为删除即可 
*/

db.query('update users set status=1  where id=?', 40, (err, results) => {
  if (err) return console.log(err.message); // 失败
  if (results.affectedRows === 1) console.log('删除数据成功!'); // 成功
})

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狗蛋的博客之旅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值