【数据库】在项目中操作MySQL(二)

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

        ① 安装操作MySQL数据库的第三方模块(mysql)

        ② 通过mysql模块连接到MySQL数据库

        ③ 通过mysql模块执行SQL语句

二、安装与配置mysql模块

        1、安装mysql模块

        mysql模块是托管于npm上的第三方模块。

        npm i mysql

        2、配置mysql模块

        //1、导入mysql模块

        const mysql = require('mysql')

        //2、建立与MySQL数据库的连接

        const db = mysql.createPool({

                host:'127.0.0.1',        //数据库的IP地址

                user:'root',                //登录数据库的账号

                password:'root',        //登录数据库的密码

                database:'myyumaoqiu'        //指定要操作哪个数据库

        }) 

        3、测试mysql模块能否正常工作

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

        //检测mysql模块能否正常工作

        db.query('SELECT 1',(err,results)=>{

                if(err)return console.log(err.message)

                //只要能打印出[RowDataPacket{'1':1}]的结果,就证明数据库连接正常

                console.log(results)

        })

三、使用mysql模块操作MySQL数据库

        1、查询语句

        查询users表中的所有数据:

        //查询users表中所有的用户数据

        db.query('SQLECT * FROM users',(err,results) => {

                //查询失败

                if(err) return console.log(err.message)

                //查询成功

                console.log(results)

        })

        2、插入语句

        向users表中新增数据,其中username为Spider-Man,password为pcc321。示例代码如下:

       //1、要插入到users表中的数据对象

        const user = {username:'Spider-Man',password:'pcc321'}

        //2、待执行的SQL语句,其中英文的?表示占位符

        const sqlStr = 'INSERT INTO users (username,password) VALUES(?,?)'

        //3、使用数组的形式,一次为?占位符指定具体的值

        db.query(sqlStr,[user.username,user.password],(err,results)=>{

                if(err)return console.log(err.message)

                if(results.affectedRows === 1){console.log('插入数据成功')}

        })

        (1)插入语句的便捷方式

                向表中新增数据时,如果数据对象的每一个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:

                //1、要插入到users表中的数据对象

                const user = {username:'Spider-Man2',password:'pcc4321'}

                //2、待执行的SQL语句,其中英文的?表示占位符

                const sqlStr = 'INSERT INTO users SET ?'

                //3、直接将数据对象当作占位符的值

                db.query(sqlStr,user,(err,results) => {

                        if(err)return console.log(err.message)

                        if(results.affectedRows === 1){console.log('插入数据成功')}

                })

        3、更新数据

        可以通过如下方式,更新表中的数据:

        //1、要更新的数据对象

        const user = {id:7,username:'aaa',password:'000'}

        //2、要执行的SQL语句

        const sqlStr = 'UPDATE users SET username=?,password=?,WHERE id=?'

        //3、调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值

        db.query(sqlStr,[user.username,user.password,user.id],(err,results) => {

                if(err) return console.log(err.message)

                if(results.addectedRows === 1) {

                        console.log('更新数据成功')

                }

        })

        (1)更新语句的便捷方式

        更新表数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速更新表数据:

        //1、要更新的数据对象

        const user = {id:7,username:'aaaa',password:'000'}

        //2、要执行的SQL语句

        const sqlStr = 'UPDATE users SET ? WHERE id=?'

        //3、调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值

        db.query(sqlStr,[user,user.id],(err,results) => {

                if(err) return console.log(err.message)

                if(results.affectedRows === 1){

                        console.log('更新数据成功!')

                }

        })

        4、删除数据

        删除数据时,推荐根据id这样的唯一标识,来删除对应的数据。示例如下:

        //1、要执行的SQL语句

        const sqlStr = 'DELETE FROM users WHERE id=?'

        //2、调用db.query()执行SQL语句的同时,为占位符指定具体的值

        //注意:如果SQL语句中有多个占位符,则必须使用数组为每个占位符指定具体的值

        //如果SQL语句中只有一个占位符,则可以省略数组

        db.query(sqlStr,7,(err,results) => {

                if(err) return console.log(err.message)

                if(results.affectedRows === 1){

                        console.log('删除数据成功')

                }

        })

        5、标记删除

        使用DELETE语句,会真正的把数据从表中删除掉,为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。

        所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。

        当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。

//标记删除:使用UPDATE语句替代DELETE语句;只更新数据的状态,并没有真正删除

db.query('UPDATE USERS SET status=1 WHERE id=?',6,(err,results)=>{

        if(err) return console.log(err.message)

        if(results.affectedRows === 1){

                console.log('删除数据成功')

        }

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值