上一篇,我们简单介绍了 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 属性判断此次操作是否成功。
好好学习、天天向上! :)