1、在项目中操作 MySQL的步骤

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

(2)通过 mysql 模块连接到 MySQL 数据库

(3)通过 mysql 模块执行 SQL 语句

在这里插入图片描述

2、安装与配置 mysql 模块

1、安装 mysql 模块

Mysql 模块是托管于 npm 上的第三方模块。它提供了在 Node.js 项目中连接和操作 MySQL 数据库的能力。

想要在项目中使用它,需要先运行如下命令,将 mysql 安装为项目的依赖包:

npm install mysql

如下:

在这里插入图片描述

2、配置 mysql 模块

如下图,我的MySQL 数据库中有如下数据:

在这里插入图片描述

在使用 mysql 模块操作 MySQL 数据库之前,必须先对 mysql 模块进行必要的配置,主要的配置步骤如下:

//导入模块
const mysql = require('mysql')
//建立与mysql数据库的联系
const db = mysql.createPool({
    host:'127.0.0.1',   //数据库的IP地址
    user:'root',        //登录数据库的账号
    password:'******',//登录数据库的密码
    database:'bear2'     //指定要操作哪个数据库
})

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

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

//测试mysql能否正常工作
db.query('SELECT 1',(err,results)=>{
    if(err) return console.log(err.message)
    //能够成功的执行SQL语句
    console.log(results)
})

测试结果为:

在这里插入图片描述

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

1、查询数据

查询 student 表中所有的数据:

db.query('SELECT * FROM STUDENT',(err,results)=>{
    //查询失败
    if(err) return console.log(err.message)
    //查询成功
    console.log(results)
})

结果为:

在这里插入图片描述

查询成功,且得到的结果是一个数组。

2、插入数据

student表中新增数据, 其中 cname'小延'age16。示例代码如下:

//要插入到student表中的数据对象
const student = {cname:'小延',age:16}
//待执行的SQL语句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO student(cname,age)VALUES(?,?)'
//使用数组的形式,依次为占位符指定具体的值
db.query(sqlStr,[student.cname,student.age],(err,results)=>{
    if(err) return console.log(err.message) //失败
    if(results.affectedRows === 1){
        console.log('插入成功') //成功
    }
})

结果为:

在这里插入图片描述

打开数据库,查看数据,即:

在这里插入图片描述

数据插入成功。

3、插入数据的便捷方式

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

//要插入到student表中的数据对象
const student = {cid:9,cname:'小杨',age:18,class_id:1002}
//待执行的SQL语句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO student SET ?'
//直接将数据对象当做占位符的值
db.query(sqlStr,student,(err,results)=>{
    if(err) return console.log(err.message) //失败
    if(results.affectedRows === 1) console.log('插入数据成功!')
})

结果为:

在这里插入图片描述

打开数据库,查看数据,即:

在这里插入图片描述

数据插入成功。

4、更新数据

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

//要更新的数据对象
const student = {cid: 8, cname: '小欣', age: 18, class_id: 1002}
//要执行的SQL语句
const sqlStr = 'UPDATE student SET cname=?,age=?,class_id=? WHERE cid=?'
//调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr,[student.cname,student.age,student.class_id],(err,results)=>{
    if(err) return console.log(err.message) //失败
    if(results.affectedRows === 1) {
        console.log('更新数据成功!')
    }
})

结果为:

在这里插入图片描述

打开数据库,查看数据,即:

在这里插入图片描述

数据更新成功。

5、更新数据的便捷方式

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

const student = {cid:1,cname:'小钰',age:17,class_id:1003}
//要执行的SQL语句
const sqlStr = 'UPDATE student SET ? WHERE cid=?'
调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr,[student,student.cid],(err,results)=>{
    if(err) return console.log(err.message) //失败
    if(results.affectedRows === 1){
        console.log('数据更新成功!')  //成功
    }
})

结果为:

在这里插入图片描述

打开数据库,查看数据,即:

在这里插入图片描述

数据更新成功。

6、删除数据

在删除数据时,最好根据 cid 这样的唯一标识,来删除对应的数据。示例如下:

//要执行的SQL语句
const sqlStr = 'DELETE FROM student WHERE cid=?'
//调用db.query()执行sql语句的同时,为占位符指定确定的值
db.query(sqlStr,3,(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){  // 失败
        console.log('删除数据成功!') //成功
    }
})

结果为:

在这里插入图片描述

打开数据库,查看数据,即:

在这里插入图片描述

删除数据成功。

需要注意的是:如果SQL语句有多个占位符,则必须为每个占位符指定具体的值,如果SQL语句只有一个占位符,则可以省略数组。

7、标记删除

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

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

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

//标记删除:使用UPDATE语句代替DELETE语句;只更新数据的状态,并没有真正删除。
db.query('UPDATE student SET class_id=? WHERE cid=?',[1000,6],(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){  // 失败
        console.log('标记删除成功!') //成功
    }
})

结果为:

在这里插入图片描述

打开数据库,查看数据,即:

在这里插入图片描述

标记删除成功。

以上就是Node.js如何在项目中操作MySQL的详细内容,更多关于Node.js操作MySQL的资料请关注Devmax其它相关文章!

Node.js如何在项目中操作MySQL的更多相关文章

  1. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  2. Android – 将SQLite与MySQL同步的最佳方式

    参见英文答案>Synchronizingclient-serverdatabases5个我正在开发一个包含网络应用和移动应用程序的项目,该应用程序记录每日用户的数据.用户可以删除,更新他们的数据,他们可以使用许多设备插入数据.我打算这样开发:用户输入他们的数据然后插入sqlite.服务将定期启动(每5小时或每小时)以使用时间戳与MysqL同步.我确实在互联网上使用服务和时间戳搜索了一个样本,但我一

  3. android – 如何将唯一的GCM注册标识存储到MySQL中

    我正在设置GoogleCloudMessaging机制的服务器端,使用MySQL存储移动应用提供的注册ID.Google可以发出最多4k个注册码,我被迫将其存储在TEXT字段中.所有的好,到目前为止,问题是我必须处理这样的情况:>用户登录到应用程序>该应用从google请求注册ID>应用程序将新的注册ID发送到应用服务器>服务器存储该注册ID并将其链接到当前登录的用户>该用户注销并且新用户登录>应

  4. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  6. Node.js调试技术总结分享

    Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

  7. node.js实现http服务器与浏览器之间的内容缓存操作示例

    这篇文章主要介绍了node.js实现http服务器与浏览器之间的内容缓存操作,结合实例形式分析了node.js http服务器与浏览器之间的内容缓存原理与具体实现技巧,需要的朋友可以参考下

  8. 教你如何使用node.js制作代理服务器

    本文介绍了如何使用node.js制作代理服务器,图文并茂,十分的详细,代码很简洁易懂,这里推荐给大家。

  9. nodeJs链接Mysql做增删改查的简单操作

    本篇文章主要介绍了nodeJs链接Mysql做增删改查的简单操作,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. node.js中的fs.openSync方法使用说明

    这篇文章主要介绍了node.js中的fs.openSync方法使用说明,本文介绍了fs.openSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部