• 【MySQL】在项目中操作MySQL---简单的增删改查


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

    1. 安装操作MySQL数据库的第三方模块(mysql
    2. 通过mysql模块连接到MySQL数据库
    3. 通过mysql模块执行SQL语句

    安装mysql模块

    npm install mysql

    配置mysql模块

    1. //导入mysql模块
    2. const mysql = require('mysql')
    3. //建立与MySQL数据库的连接
    4. const db=mysql.createPool({
    5. host:'127.0.0.1', //数据库ip地址
    6. user:'root', //数据库的账号
    7. password:'admin123', //数据库的密码
    8. database:'my_db01' //指定要操作哪个数据库
    9. })

    测试模块是否可以正常工作: 

    调用db.query()函数,执行要执行的SQL语句,通过回调函数拿到执行的结果:

    1. //检测mysql模块能否正常工作
    2. db.query('SELECT1',(err,results)=>{
    3. if(err)return console.log(err.message)
    4. //只要打印出[RowDataPacket{'1':'1'}]的结果,就证明数据库连接正常
    5. console.log(results)
    6. })

    查询数据

     执行的select语句,执行的结果是数组 

    1. //查询users表中所有的用户数据
    2. db.query('SELECT * from users',(err,results)=>{
    3. //查询失败
    4. if(err) return console.log(err.message)
    5. //查询成功
    6. console.log(results)
    7. })

    插入数据

    如果执行的是insert into插入语句,则results是一个对象

    可以通过affectedRows属性,来判断是否插入数据成功 

    1. //要插入到users表中的数据对象
    2. const user = {username:'Spider-Man',password:'pcc321'}
    3. //待执行的sql语句,其中的英文?是占位符
    4. const sqlStr='insert into users (username,password) values (?,?)'
    5. //使用数组的形式,依次为?占位符指定具体的值
    6. db.query(sqlStr,[user.username,user.password],(err,results)=>{
    7. if(err) return console.log(err.message)
    8. if(results.affectedRows === 1 ){console.log('插入数据成功')}
    9. })

    注意因为之前id为4和5的数据删除了,所以id从6开始

    插入数据的便捷方式,如果数据对象的每个属性和数据表的字段一一对应

    1. //要插入到users表中的数据对象
    2. const user = {username:'Spider-Man2',password:'pcc4321'}
    3. //待执行的sql语句,其中的英文?是占位符
    4. const sqlStr='insert into users set ?'
    5. //执行sql语句
    6. db.query(sqlStr,user,(err,results)=>{
    7. if(err) return console.log(err.message)
    8. if(results.affectedRows === 1 ){console.log('插入数据成功')}
    9. })

    更新数据

    执行了update语句之后,得到的结果也是对象 

    1. //要更新的users表中的数据对象
    2. const user = { id:8, username:'aaa',password:'000'}
    3. //要执行的sql语句
    4. const sqlStr='update users set username=?,password=? where id=?'
    5. //执行sql语句
    6. db.query(sqlStr,[user.username,user.password,user.id],(err,results)=>{
    7. if(err) return console.log(err.message)
    8. if(results.affectedRows === 1 ){console.log('更新数据成功')}
    9. })

     

     更新数据的便捷方式

    1. //要更新的users表中的数据对象
    2. const user = { id:8, username:'aaaa',password:'0001'}
    3. //要执行的sql语句
    4. const sqlStr='update users set ? where id=?'
    5. //执行sql语句
    6. db.query(sqlStr,[user.id],(err,results)=>{
    7. if(err) return console.log(err.message)
    8. if(results.affectedRows === 1 ){console.log('更新数据成功')}
    9. })

     

    删除数据

    1. //要执行的sql语句
    2. const sqlStr='delete from users where id=?'
    3. //调用db.query执行sql语句的同时,为占位符指定具体的值
    4. //注意:如果sql语句中有多个占位符,则必须使用数组为每个占位符指定具体的值
    5. //如果sql语句中只有一个占位符,则可以省略数组
    6. db.query(sqlStr,6,(err,results)=>{
    7. if(err) return console.log(err.message)
    8. if(results.affectedRows === 1 ){console.log('删除数据成功')}
    9. })

     

    标记删除

    使用delete语句,会把真正的数据从表中删除掉,为了保险起见,推荐使用标记删除的形式,来模拟删除的动作,所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除

    1. //标记删除 使用update语句替代delete语句,只更新数据的状态,并没有真正删除
    2. db.query('update users set status=1 where id=?',6,(err,results)=>{
    3. if(err) return console.log(err.message)
    4. if(results.affectedRows === 1 ){console.log('删除数据成功')}
    5. })
    1. const sqlStr='update users set status=? where id=?'
    2. //标记删除 使用update语句替代delete语句,只更新数据的状态,并没有真正删除
    3. //数组的两个数,第一个为status 第二个为id
    4. db.query(sqlStr,[1,8],(err,results)=>{
    5. if(err) return console.log(err.message)
    6. if(results.affectedRows === 1 ){console.log('删除数据成功')}
    7. })

     

  • 相关阅读:
    融合振幅随机补偿与步长演变机制的改进原子搜索优化算法
    fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
    2.2 IOC之基于XML管理bean
    二分算法(超详细)
    基于JAVA幼儿影视节目智能推荐系统计算机毕业设计源码+系统+数据库+lw文档+部署
    面试题:Redis缓存数据库,持久化机制有哪几种呢?
    时间管理之四象限法则
    Go:模幂算法(附完整源码)
    项目必用的全局异常处理器,你学会了吗
    protobuf与grpc
  • 原文地址:https://blog.csdn.net/qiaoyangla/article/details/126246656