【Node.js】MySQL数据库的第三方模块(mysql)


在这里插入图片描述

安装操作MySQL数据库的第三方模块(mysql)
  • npm init -y,对项目进行初始化操作,对包进行管理
  • npm install mysql 安装第三方模块
  • 安装完,必须进行配置!
// 1.导入mysql模块
// const mysql = require('mysql')
// mysql模块不兼容,检测时会报错
// 报错Client does not support authentication protocol requested by server; consider upgrading MySQL client,
// 所以安装mysql2,使用npm i mysql2安装,再导入 mysql2
通过第三方模块(mysql2)连接到MySQL数据库
// 1.导入mysql2模块
const mysql = require('mysql2')
// 2,建立与MySQL数据库的连接
const db = mysql.createPool({
    
    
    host: "127.0.0.1", //数据库的IP地址
    user: "root", //登录数据库的账号
    password: "lusheng123", //登录数据库的密码
    database: "my_db_01", //指定要操作哪个数据库
}) 

//3.检测mysql模块是否正常工作 SELECT 1 无作用,只是测试
db.query('SELECT 1',(err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err)
    //res是成功的消息
    console.log(results) 
}) 
  • 打印出这个就证明成功
    在这里插入图片描述
mysql插入数据
  • 如果执行的select查询语句,则执行的结果是数组
  • insert into,执行的结果是对象
  • results.affectedRows代表操作的行数,等于1代表插入成功
// 插入新增数据,其中username为西游记,password是000000
// 定义要插入的对象数据
const user = {
    
    
    username: "西游记",
    password: "000000"
}
// 定义待执行的SQL语句,别写错了
const sqlstr= 'insert into users (username,password) values (?,?)'
// 使用数组的形式,依次为?占位符指定值
db.query(sqlstr,[user.username,user.password], (err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err.message)
    //res.affectedRows是影响的行数
    if(results.affectedRows===1){
    
    console.log("插入数据成功")}
}) 
  • 数据库查询,果然成功了
    在这里插入图片描述
mysql插入数据的便捷方式
  • 当新增数据时候,如果数据对象的每个属性和数据表的字段一一对应
  • set ? ,代表这个对象身上有几个属性就插入几个属性
// 定义要插入的对象数据
const user1 = {
    
    
    username: "西游记1",
    password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1= 'insert into users set ?'
// 使用数组的形式,依次为?占位符指定值
db.query(sqlstr1,user1, (err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err.message)
    //res.affectedRows是影响的行数
    if(results.affectedRows===1){
    
    console.log("插入数据成功")}
}) 
mysql更新数据
const user1 = {
    
    
    id: 7,
    username: "红楼梦",
    password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1 = 'update users set username=?,password=? where id = ?'
db.query(sqlstr1, [user1.username, user1.password, user1.id], (err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err.message)
    //res.affectedRows是影响的行数
    if (results.affectedRows === 1) {
    
    
        console.log("更新数据成功")
    } 
})
mysql更新数据的便捷方式
const user1 = {
    
    
    id: 7,
    username: "红楼梦1",
    password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1 = 'update users set ? where id = ?'
db.query(sqlstr1, [user1, user1.id], (err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err.message)
    //res.affectedRows是影响的行数
    if (results.affectedRows === 1) {
    
    
        console.log("更新数据成功")
    } 
})
mysql删除数据
  • 删除数据的时候,推荐根据id这样的唯一标识,来删除对应的数据

  • 执行delete 语句后,结果也是一个对象

  • 如果有多个占位符,则必须使用数组为每个占位符指定具体的值

  • 如果只有一个,数组可省略

// 定义待执行的SQL语句
const sqlstr = 'delete from users where id=?'
db.query(sqlstr,6, (err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err.message)
    //res.affectedRows是影响的行数
    if (results.affectedRows === 1) {
    
    
        console.log("删除成功")
    } 
})
  • 标记删除
  • 当然,为了保险起见,推荐使用标记删除的形式,来模拟删除的动作,就是设置状态字段,来标记当前数据是否被删除
  • 字段参数status为1代表已删除,为0代表未删除
// 定义待执行的SQL语句
const sqlstr = 'update users set status=? where id=?'
db.query(sqlstr,[1,7], (err, results) => {
    
    
    //err为报错信息
    if (err) return console.log(err.message)
    //res.affectedRows是影响的行数
    if (results.affectedRows === 1) {
    
    
        console.log("标记删除数据成功")
    } 
})

猜你喜欢

转载自blog.csdn.net/weixin_44899940/article/details/129257893