上一篇,我们简单介绍了 MySQL 中的 SQL 基本语句的使用,此篇文章我们来看看如何在个人项目中使用 MySQL 数据库,通过 JavaScript 编程的形式来对 MySQL 数据库中的数据进行常规的增删改查操作

在项目中操作 MySQL 数据库的步骤:

1.安装操作 MySQL 数据库的第三方模块(mysql)

npm install mysql

2.通过 mysql 模块连接到 MySQL 数据库

// 1.导入 mysql 模块
const mysql = require('mysql')

// 2.建立与 MySQL 数据库的连接关系
const db = mysql.createPool({
    host: '127.0.0.1',  // 数据库的 IP 地址
    user: 'root',   // 登录数据库的账号名称
    password: 'admin123',   // 登录数据库的账号密码
    database: 'my_db_01',   // 指定具体要操作哪个数据库
})

注:导入并连接上 MySQL 数据库后需测试一下 mysql 模块是否能正常工作,在上述代码后书写测试的代码:

// 测试 mysql 模块是否能正常工作(这段代码没有实质性功能只用于测试此模块)
db.query('select 1', (err, results) => {
    // mysql 模块工作期间报错了
    if(err) return console.log(err.message);
    // 能够正常执行 SQL 语句
    console.log(results);
})
// 注:终端执行后打印的结果是“[ RowDataPacket { '1': 1 } ]”则表示数据库连接正常

3.通过 mysql 模块执行 SQL 语句操作数据库的数据。如:

通过 const db = mysql.createPool() 成功连接上 MySQL 数据库后,可以通过 db.query()

新增数据——insert into

const user = {username: 'red', password: 'red666'}
  const sqlStr = 'insert into users set ?'
  db.query(sqlStr, user, (err, results) => {})

注:可以在 query 的回调函数中判断此次操作是否成功,且 insert into 操作得到的 results 是一个对象,通过 results.affectedRows

const user = {username: 'red', password: 'red666'}
// 定义待执行的 SQL 语句
const sqlStr = 'insert into users set ?'
db.query(sqlStr, user, (err, results) => {
    // 操作失败
    if(err) return console.log(err.message);
    // 操作成功
    if(results.affectedRows === 1) {
        console.log('插入数据成功!');
    }
})

删除数据——delete

const sqlStr = 'delete from users where id=?'
db.query(sqlStr, 5, (err, results) => {})

 注:删除操作建议都使用 id 这个每条数据都有的唯一标识来指定到具体的数据。且 delete 操作得到的 results 也是一个对象,通过 results.affectedRows

const sqlStr = 'delete from users where id=?'
db.query(sqlStr, 5, (err, results) => {
    if(err) return console.log(err.message);
    if(results.affectedRows === 1) {
        console.log('删除数据成功!');
    }
})

注意删除操作属于危险操作是不可逆的,所以为了保险起见推荐使用标记删除的形式来模拟删除的动作,标记删除即类似于创建 status 这样的状态字段来标记当前数据是否被删除,当用户执行删除操作时,我们并没有执行 delete 操作而是执行 update 操作修改状态字段。如:

// 标记删除——update
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('标记删除成功!');
    }
})

修改数据——update

const user = {id: 6, username: 'Anna', password: 'anna666'}
const sqlStr = 'update users set ? where id=?'
db.query(sqlStr, [user, user.id], (err, results) => {})

 注:修改数据时也要记得通过 where 限制条件来筛选出所需数据,不然可能会导致整个数据表被修改,如果需要修改的数据只有一条,推荐使用该数据的 id 字段进行指定。且 update 操作得到的 results 也是一个对象,通过 results.affectedRows

const user = {id: 6, username: 'Anna', password: 'anna666'}
const sqlStr = 'update users set ? where id=?'
db.query(sqlStr, [user, user.id], (err, results) => {
    if(err) return console.log(err.message);
    if(results.affectedRows === 1) {
        console.log('更新数据成功!');
    }
})

查询数据 ——select

// 查询 users 表中的所有数据
db.query('select * from users', (err, results) => {})

注:若执行的是 select 查询操作,则返回的结果是一个数组,该数组的每一项都是一个对象,该对象代表该数据表中的每一条数据

注: 新增修改删除操作都可以在 sqlStr 中使用 ? 进行占位,在后续调用 db.query() 方法时再填充所需的值即可;且此三种操作得到的 results 都是一个对象都可以根据 affectedRows 属性判断此次操作是否成功。

好好学习、天天向上!        :)