mysql 模块

npm 上的第三方模块,用于在 node.js 项目中操作 MySQL 数据库

使用

导入

1
const mysql = require('mysql')

建立连接

1
2
3
4
5
6
7
const db = mysql.createPool({
host: '', // 数据库ip地址
port: "3306", // 端口
user: '', // 数据库用户名
password: '', // 数据库密码
database: '' // 数据库名
})

操作数据库

查询

1
2
3
4
5
6
7
const sqlStr = 'select * from users'; // sql代码
db.query(sqlStr, (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
return results;
});

SQL 是查询语句,results 是一个数组,里面是数据库返回的查询结果

插入

1
2
3
4
5
6
7
8
9
10
const newUser = {username:'zs', password:'123456'}
const sqlStr = 'insert into users (username, password) values (?, ?)';
db.query(sqlStr, [newUser.username, newUser.password], (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('数据插入成功')
}
});

在执行的 SQL 语句中,可以使用 ‘?’ 占位

SQL 是插入语句,results 是一个对象,results.affectedRows是数据库改变行数


1
2
3
4
5
6
7
8
9
10
const newUser = {username:'zs', password:'123456'}
const sqlStr = 'insert into tableName set ?';
db.query(sqlStr, newUser, (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('数据插入成功')
}
});

如果数据对象中的属性与数据表字段一一对应,就可以使用上面这种写法

更新

1
2
3
4
5
6
7
8
9
10
const newUser = {uid:'1', username:'zs', password:'123456'}
const sqlStr = 'update users set username=?, password=? where uid=?';
db.query(sqlStr, [newUser.username, newUser.password, newUser.uid], (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('数据更新成功')
}
});

1
2
3
4
5
6
7
8
9
10
const newUser = {uid:'1', username:'zs', password:'123456'}
const sqlStr = 'update users set ? where uid=?';
db.query(sqlStr, [newUser, newUser.uid], (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('数据更新成功')
}
});

如果数据对象中的属性与数据表字段一一对应,就可以使用上面这种写法

删除

推荐根据 id 来删除数据

1
2
3
4
5
6
7
8
9
const sqlStr = 'delete from users where uid=?'; 
db.query(sqlStr, 1, (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('删除数据成功')
}
});

只有一个占位符时,可以省略数组

标记删除

设计一个 status 状态码字段,来标记这条数据是否被删除

1
2
3
4
5
6
7
8
9
const sqlStr = 'update users set status=? where uid=?';
db.query(sqlStr, [13], (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('标记删除成功')
}
});