目录
一、安装mysql模块
npm i mysql
二、导入并配置mysql
const mysql = require('mysql')
const db = mysql.createPool({
host:'127.0.0.1', //数据库ip地址
user:'root', //数据库账号
password:'123456',//数据库密码
database:'test_01'//数据库名称
})
db.getConnection(function (err, connection) {
if (err) {
throw new Error(err.message);
} else {
console.log("建立连接成功");
console.log(db._allConnections.length); // 1
connection.query("select 1", function (err, results) {
if(err) throw new Error(err.message) //失败返回错误信息
console.log(results) // 成功返回[ RowDataPacket { '1': 1 } ]
connection.destory(); // 当一个连接不再需要使用且需要从连接池中移除时,用connection对象的destroy方法
console.log(db._allConnections.length); // 0
});
}
db.end(); // 当一个连接池不再需要使用时,用连接池对象的end方法关闭连接池
});
配置参数:
host |
主机地址 (默认:localhost) |
user |
用户名 |
password |
密码 |
port |
端口号 (默认:3306) |
database |
数据库名 |
charset |
连接字符集(默认:'UTF8_GENERAL_CI',注意字符集的字母都要大写) |
localAddress |
此IP用于TCP连接(可选) |
socketPath |
连接到unix域路径,当使用 host 和 port 时会被忽略 |
timezone |
时区(默认:'local') |
connectTimeout |
连接超时(默认:不限制;单位:毫秒) |
stringifyObjects |
是否序列化对象 |
typeCast |
是否将列值转化为本地JavaScript类型值 (默认:true) |
queryFormat |
自定义query语句格式化方法 |
supportBigNumbers |
数据库支持bigint或decimal类型列时,需要设此option为true (默认:false) |
bigNumberStrings |
supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false) |
dateStrings |
强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScript Date类型(默认:false) |
debug |
开启调试(默认:false) |
multipleStatements |
是否许一个query中有多个MySQL语句 (默认:false) |
flags |
用于修改连接标志 |
ssl |
使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件 |
三、数据库crud操作
1.插入操作
const param = { name: "zhangsan", gender: "男", age: "20" };
const sqlStr = "insert into user (name,gender,age) values (?,?,?)";
db.query(sqlStr, [param.name, param.gender, param.age], (err, res) => {
if (err) throw new Error(err.message);
if (res.affectedRows == 1) {
console.log("插入成功");
}
});
2.查询操作
const param = {name:"zhangsan"}
const sqlStr = "select * from user where name = ?";
db.query(sqlStr, [param.name], (err, res) => {
if (err) throw new Error(err.message);
if (res) {
console.log(res);
//[ RowDataPacket { id: 1, name: 'zhangsan', gender: '男', age: '20' } ]
}
});
3.更新操作
const param = { name: "lisi", age: "23", id: 1 };
const sqlStr = "update user set name = ?,age = ? where id = ?";
db.query(sqlStr, [param.name, param.age, param.id], (err, res) => {
if (err) throw new Error(err.message);
if (res.affectedRows == 1) {
console.log("更新成功");
}
});
4.删除操作
①物理删除
const param = { id: 1 };
const delSql = 'delete from user where id = ?';
db.query(delSql, [param.id], (err, res) => {
if (err) throw new Error(err.message);
if (res.affectedRows == 1) {
console.log("删除成功");
}
});
②逻辑删除(推荐)
const param = { status: 0 ,id: 1 };
const delSql = 'update user set status = ? where id = ?';
db.query(delSql, [param.status,param.id], (err, res) => {
if (err) throw new Error(err.message);
if (res.affectedRows == 1) {
console.log("删除成功");
}
});