“Node.js:操作mysql数据库“

Node.js中操作mysql数据库

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

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

(1).安装mysql数据库的第三方模块(mysql)

npm install mysql

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

mysql.createPool()

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

db.query()

1.操作mysql数据库

// 1.导入mysql模块
const mysql = require('mysql')
// 2.创建与mysql数据库的连接
const db = mysql.createPool({

    host: '127.0.0.1',          // 数据库的ip地址
    user: 'root',               // 登录数据库的账号
    password: 'pancc',          // 登录数据库的密码
    database: 'my_db_01'        // 指定要操作的数据库
})

// 测试mysql模块能否正常运行
// 3.执行sql语句 
db.query('SELECT 1', (err, results) => {

    if (err) return console.log(err.message)
    console.log(results)        // [ RowDataPacket { '1': 1 } ] 说明数据库连接正常
})
  • db.query()用来执行sql语句
  • sql执行成功,err默认为null,results为返回的数据

2.查询数据

select 字段1,字段2 from 表名

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})
// 查询user表的所有数据
const sqlStr = 'select * from users'
db.query(sqlStr, (err, results) => {

    // 查询失败
    if (err) return console.log(err.message)
    // 查询成功 
    console.log(results)
})
  • 注意: 如果执行的是select查询语句,则results是数组

3.插入数据

insert into 表名 (字段1,字段2) values(值1,值2)

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})
// 待新增的数据
const user = { username: '马超', password: '000000' }
// 待执行的sql语句
const sqlStr = 'insert into users (username,password) values(?,?)'
// 执行sql语句    
db.query(sqlStr, [user.username, user.password], (err, results) => {  // 

    if (err) return console.log(err.message)
    if (results.affectedRows === 1) {
        console.log('插入数据成功!')
    }
})
  • sql中英文?占位符,使用数组的形式,依次为?占位符指定具体的值
  • 注意: 如果执行的是insert插入语句,则results是一个对象
  • 可以通过results的affectedRows属性来判断是否插入数据成功

插入数据的简便方式

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})
// 待新增的数据
const user = { username: '马超', password: '000000' }
// 待执行的sql语句
const sqlStr = 'insert into users set ?'
// 执行sql语句    
db.query(sqlStr, [user.username, user.password], (err, results) => {  // 

    if (err) return console.log(err.message)
    if (results.affectedRows === 1) {
        console.log('插入数据成功!')
    }
})
  • 向表中新增数据时,如果数据对象的每个属性和数据表字段一一对应,就可以以便捷的方式插入数据

4.更新数据

update 表名 set 字段1=值1,字段2= 值2

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})

// 更新的数据对象
const user = { id: 4, username: '张辽', password: '888888' }
// sql语句
const sqlStr = 'update users set username=?,password=? where id=?'
// 执行sql语句
db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {

    if (err) return console.log(err.message)
    if (results.affectedRows === 1) {
        console.log('更新数据成功!')
    }
})
  • 注意: 如果执行的是update更新语句,则results是一个对象

更新数据的简便方式

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})
// 更新的数据对象
const user = { id: 4, username: '陆逊', password: '777777' }
// sql语句
const sqlStr = 'update users set ? where id=?'
// 执行sql
db.query(sqlStr, [user, user.id], (err, results) => {

    if (err) return console.log(err.message)
    if (results.affectedRows === 1) {

        console.log('更新数据成功!')
    }
})
  • 向表中更新数据时,如果数据对象的每个属性和数据表字段一一对应,就可以以便捷的方式插入数据

5.删除数据

delete from 表名

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})

// sql语句
const sqlStr = 'delete from users where id=?'
// 执行sql
db.query(sqlStr, 17, (err, results) => {

    if (err) return console.log(err.message)
    // 注意: 执行delete语句的时候,结果results也是一个对象
    if (results.affectedRows === 1) {

        console.log('删除数据成功!')
    }
})
  • 在删除数据时,推荐根据id这样的唯一标识,来删除对应的数据
  • 如果sql语句中只有一个占位符,为?占位符指定具体的值,可以省略数组形式
  • 注意: 执行delete语句的时候,结果results也是一个对象

6.标记删除

const mysql = require('mysql')
const db = mysql.createPool({

    host: '127.0.0.1',
    user: 'root',
    password: 'pancc',
    database: 'my_db_01'
})
// 标记删除: 使用update语句替代delete语句;只更新数据的状态,并没有真正删除
const sqlStr = 'update users set status=? where id=?'
db.query(sqlStr, [1, 4], (err, results) => {

    if (err) return console.log(err.message)
    if (results.affectedRows === 1) {

        console.log('标记删除成功!')
    }
})
  • 使用delete语句,会把真正的数据进行删除。为了保险起见,推荐使用标记删除,来模拟删除动作
  • 设置类似status这样的状态字段,来标记当前这条数据是否被删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/21268.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JDK源码阅读环境搭建

本次针对jdk8u版本的搭建 1.新建项目 新建java项目JavaSourceLearn ,这里我创建的是maven 2.获取JDK源码 打开Project Structure 找到本地JDK安装位置将src.zip解压到项目java包中 整理下项目结构,删除用不到的目录 提示: 添加源码到项目之后首次运行…

从零玩转设计模式之原型模式-yuanxingmoshi

title: 从零玩转设计模式之原型模式 date: 2022-12-11 20:05:35.488 updated: 2022-12-23 15:35:44.159 url: https://www.yby6.com/archives/yuanxingmoshi categories: - 设计模式 tags: - 设计模式 - 原型模式 什么是原型模式设计模式? 原型模式是一种软件设计模式&#…

公司招了一个00后,以为是个小年轻,没想到人家是个卷王...

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资也不低,面试的人很多,但平均水平很让人失望。 令我印象最深的是一个00后测试员,…

【Linux高级 I/O(2)】如何使用阻塞 I/O 与非阻塞 I/O?——select()函数

上次我们虽然使用非阻塞式 I/O 解决了阻塞式 I/O 情况下并发读取文件所出现的问题,但依然不够完美,使得程序的 CPU 占用率特别高。解决这个问题,就要用到本文将要介绍的 I/O 多路复用方法。 何为 I/O 多路复用 I/O 多路复用(IO m…

AI 将完全取代前端开发吗?

注:今晨,我浏览 Medium,看到了篇颇为标题党的文章,于是我就将它抛给了 ChatGPT。本篇文章全部由 ChatGPT 所写。同时,我也请 ChatGPT 分享了它对此的观点。 最近,我的同事向我讲述了他与他老板的一次谈话。…

Python机器学习:Scikit-learn和TensorFlow的应用和模型设计

一、引言 Python在机器学习领域中已经成为非常受欢迎的编程语言。Scikit-learn和TensorFlow是Python中应用最广泛的两个机器学习库,它们提供了丰富的机器学习算法和工具,帮助开发人员轻松地构建和训练机器学习模型。本文将详细介绍Scikit-learn和Tensor…

功率放大器的选型原则和方法是什么

功率放大器是一种能够将低电平信号放大到足够高的电平以驱动负载的电子器件。在各种电子设备中,功率放大器被广泛应用,如音响系统、电视广播、汽车音响、射频通信等。因此,正确选型功率放大器非常重要,可以提高设备的性能和可靠性…

如何在linux中配置JDK环境变量

在linux系统部署皕杰报表,因皕杰报表是一款纯java报表工具,运行时需要jre环境,所以要在服务器上配置三个jdk环境变量path、classpath、JAVA_HOME。 那么为什么要配置jdk环境变量呢?因为java软件运行时要用到一些java命令&#xff…

Python挑选出无Labelme标注文件的图片文件

Python挑选出无Labelme标注文件的图片文件 前言前提条件相关介绍实验环境Python挑选出无Labelme标注文件的图片文件代码实现输出结果 前言 本文是个人使用Python处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。 (https://blog.…

JAVA常用API - Runtime和System

文章目录 前言 大家好,我是最爱吃兽奶,今天给大家带来JAVA常用API中的Runtime类和System类 那么就让我们一起去看看吧! 一、Rubtime 1.Rubtime是什么? 2.Runtime常用方法 Runtime提供了很多方法,在这里演示两个 public static Runtime getRuntime(): 返回当前运行时环境的…

Ada 语言学习(3)复合类型数据——Array

文章目录 Array数据类型声明数组索引数组范围数组复制数组初始化直接赋值通过拷贝赋值不同索引范围但长度相等非指定类型边界收缩 多维数组数组遍历数组切片访问和动态检查直接访问动态检查 数组字面量 Array literal数组拼接两个数组拼接数组和单个值拼接 Array Equality&…

SpringBoot【开发实用篇】---- 整合第三方技术(消息)

SpringBoot【开发实用篇】---- 整合第三方技术(消息) 消息的概念Java处理消息的标准规范JMSAMQPMQTTKafka 购物订单发送手机短信案例订单业务短息处理业务 SpringBoot整合ActiveMQ安装整合 SpringBoot整合RabbitMQ安装整合(direct模型&#x…

加密解密软件VMProtect教程(六):主窗口之控制面板“项目”部分(2)

VMProtect 是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…

solidworks2020及麦迪工具箱安装

1、麦迪工具箱安装 1)下载 下载链接:www.maidiyun.com/download 下载今日制造 2)安装 由于电脑上安装了杀毒软件,会直接删除解压后的安装包,因此需要关闭杀毒软件或者在被删除后进入杀毒软件的隔离区将该文件添加…

Tomcat安装与使用

Tomcat 是HTTP服务器,用于使用HTTP协议。 1、下载Tomcat 下载链接:https://tomcat.apache.org/ 进入官网后,根据自己想要下载的版本进行下载,我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本,下载Z…

Netty入门

Netty入门 1. 概述 1.1 Netty是什么? Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.以上片段摘自官网,Netty 是一个异步的、基于事…

三十六、链路追踪、配置中心

1、链路追踪 在一次调用链路中,可能设计到多个微服务,如果在线上,某个微服务出现故障,如何快速定位故障所在额微服务呢。 可以使用链路追踪技术 1.1链路追踪介绍 在大型系统的微服务化构建中,一个系统被拆分成了许多微…

chatgpt赋能Python-python3_排序

Python3 排序指南:介绍、说明和实践 Python3是当今最受欢迎的编程语言之一,拥有许多可用于各种任务的库和框架。其中之一是它自带的排序函数,在数据分析和机器学习等领域中非常有用。 在本篇文章中,我们将简要介绍Python3的排序和…

基于AT89C51单片机的贪吃蛇游戏设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87778030 源码获取 主要内容: 设计一个贪吃蛇游戏,使其具有以下游戏规则:①当没有改变方向时,贪吃蛇沿原来路径一直前进②贪吃蛇无法回头,只能异于当前方向改变行动③蛇…

第7章链接:如何动态连接共享库、从应用程序中加载和链接共享库

文章目录 7.10 动态链接共享库静态库的缺点何为共享库共享库的"共享"的含义动态链接过程 7.11 从应用程序中加载和链接共享库运行时动态加载和连接共享库的接口 dlopen函数 dlsym函数 dlclose函数 dlerror动态加载和链接共享库的应用程序示例 7.12 *与位置无关的代码…
最新文章