初学Nodejs(7):mysql模块的简单使用

news2024/9/19 19:00:44

文章目录

  • Nodejs
  • mysql模块
    • 1、在项目中操作数据库的步骤
      • 1.1 安装操作mysql数据库的第三方模块(mysql)
      • 1.2 通过mysql模块连接到mysql数据库,并进行必要配置
      • 1.3 通过mysql模块执行sql语句
        • 1.3.1 查询数据
        • 1.3.2 插入数据
          • 插入数据的快捷方式
        • 1.3.3 更新数据
          • 更新数据便捷方式
        • 1.3.4 删除数据
          • 标记删除

Nodejs

mysql模块

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

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

npm install mysql

1.2 通过mysql模块连接到mysql数据库,并进行必要配置

// 1、导入mysql模块
const mysql = require('mysql')
// 2、建立与mysql数据库的连接
const db = mysql.createPool({
	host:'127.0.0.1',    // 数据库的ip地址
	user:'root',         // 登录数据库的账号
	password:'admin123', // 登录数据库的密码
	database:'my_db_01'  // 指定要操作的数据库
})

1.3 通过mysql模块执行sql语句

1.3.1 查询数据

db.query('select * from users',(err,results)=>{
	// 查询失败
    if(err) return console.log(err.message);
	// 查询成功
    console.log(results);
})

如果执行的是select查询语句,则执行返回的结果是一个数组,例如
在这里插入图片描述

1.3.2 插入数据

// 插入数据
// 要插入到users表中的数据对象
const user = {id:4,name:'peter',age:30}

// 要执行的插入语句
const sqlStr = 'insert into users (id,name,age) values(?,?,?)'

// 使用数组的形式,依次位 ? 占位符指定具体的值
db.query(sqlStr, [user.id,user.name,user.age], (err,results) => {
    if(err) return console.log(err.message)
    // 如果affectedRows属性值为1,则插入成功
    if(results.affectedRows === 1){
        console.log('插入数据成功');
    }
})

插入成功则会输出‘插入数据成功’

如果执行的是insert into 语句,在results是一个对象,可以通过affectedrows属性来判断插入数据是否成功

插入数据的快捷方式

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

// 插入数据的快捷方式
// 1、要插入到表中的数据对象
const user = { id:5,name:'sb',age:30}

// 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('插入数据成功!');
    }
})

1.3.3 更新数据

// 更新数据
// 要更新的信息,更新id=2的数据的信息
const user = {id:2,name:'ray',age:29}

// 更新数据的sql语句
const sqlStr = 'update users set name=?,age=? where id=2'

// 执行sql语句
db.query(sqlStr,[user.name,user.age],(err,results) => {
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){
        console.log("更新数据成功!");
    }
})
更新数据便捷方式
// 更新数据的便捷方式
// 要更新的数据,根据id来更新数据
const user = {id:2,name:'may',age:50}

// 更新数据的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("更新数据成功!");
    }
})

1.3.4 删除数据

// 删除数据
// 删除语句
const sqlStr = 'delete from users where id=?'

// 执行sql语句(第二个参数标识删除id=2的数据)
db.query(sqlStr,2,(err,results) => {
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){
        console.log('删除数据成功!');
    }
})

这种删除是不安全的,使用delete语句会真正的把数据从表中删除掉,为了保险起见,推荐使用标记删除的形式,来模拟删除的动作

标记删除

所谓的标记删除,就是虽然用户执行了删除操作,但并没有将数据删掉,而是执行了update语句将这条数据对应的status字段标记为删除。

// 标记删除
const sqlStr = 'update users set status=? where id=?'

// 执行sql语句
db.query(sqlStr,[1,2],(err,results) => {
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){
        console.log('标记删除成功!');
    }
})

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

43_读写内部Flash实验

目录 STM32的内部FLASH简介 内部FLASH的构成 主存储器 系统存储区 对内部FLASH的写入过程 解锁 擦除扇区 写入数据 操作内部FLASH的库函数 FLASH解锁、上锁函数 设置操作位数及擦除扇区 写入数据 实验源码 STM32的内部FLASH简介 在STM32芯片内部有一个FLASH(nor …

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_ Traceability Documentation Environment

由于Traceability & Documentation和Environment的两块内容较少,所以就合并起来介绍,单独的功能介绍略少,就不分开了,vTESTstudio工具栏介绍这块内容主要也是给大家做个普及,大家也是主要做个了解,方便…

可信启动、安全启动:SGX、TrustZone、SecureEnclave

最近在公众号上看到了一篇文章,算是又丰富了自己的安全方面的眼界。 最近看公众号取代了小视频、知乎这些东西。以前是真的不喜欢碎片化的东西,看什么学什么总是要找到书籍。但是这样的做法太过的极端,因为有时候有些事是两面性的。比如像安全…

SD nand与SD卡 SPI模式驱动

SD nand 与 SD卡的SPI模式驱动 文章目录SD nand 与 SD卡的SPI模式驱动1. 概述2. SPI接口模式与SD接口模式区别2.1 接口模式区别2.2 硬件引脚2.3 注意事项3. SD接口协议3.1 命令3.1.1 命令格式3.1.2 命令类型3.2 响应3.2.1 响应格式4. SD nand(SD卡)结构描…

小程序01/ 小程序 模板语法—条件渲染方式、小程序 模板语法-列表循环渲染方式

模板语法—条件渲染方式 1.wx:if 语法: 单分支: wx:if" 条件 " 双分支: wx:else 多分支: wx:elif" 条件 " 作用: 根据条件渲染 如果条件不满足 则该元素不会添加到DOM数 注意: wx:else前面必须要有 wx:if 或 wx:elif 2.hidden 语法: hidden&qu…

Vue Router安装与基本使用

Vue Router安装与基本使用(入门使用) 一、安装 npm install vue-router4在package.json 会配置一行 “vue-router”: “^4.1.6” 二、基本使用 2.1、新建路由器 新建 router文件夹 1个index.js文件 //1.定义路由组件 import Home from ../views/Home.vue import About from ..…

[附源码]Python计算机毕业设计Django学生社团信息管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

QtCreator同时运行多个程序

更多精彩内容👉个人内容分类汇总 👈👉Qt开发经验 👈 QtCreator同时运行多个程序 在Windows下QtCreator默认只能运行一个程序,再次编译运行就会自动关闭之前运行的程序; 有时候我们想运行多个程序时&#x…

【电力系统】考虑储能优化的微网能量管理双层模型附matlab代码

​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法…

一篇文章带你了解HBase、Zookeeper的安装部署

第 2 章 HBase 快速入门2.1 HBase 安装部署2.1.1 Zookeeper 正常部署2.1.2 Hadoop 正常部署2.1.3 HBase 的解压2.1.4 HBase 的配置文件2.1.5 HBase 远程发送到其他集群2.1.6 HBase 服务的启动2.1.7 查看 HBase 页面2.1.8 高可用(可选)2.2 HBase Shell 操…

「地表最强」C++核心编程(四)类和对象—对象初始化和清理

环境: 编译器:CLion2021.3;操作系统:macOS Ventura 13.0.1 文章目录一、构造函数和析构函数1.1 构造函数1.2 析构函数1.3 示例二、构造函数的分类及调用1.1 构造函数的分类1.2 构造函数的调用三、拷贝构造函数调用时机3.1 调用时机…

黑*头条_第1章_环境搭建、SpringCloud微服务(注册发现、服务调用、网关)(新版)

黑*头条_第1章_环境搭建、SpringCloud微服务(注册发现、服务调用、网关)(新版) 文章目录黑*头条_第1章_环境搭建、SpringCloud微服务(注册发现、服务调用、网关)(新版)1)课程对比2)项目概述2.1)能让你收获什么2.2)项目课程大纲2.3…

计算机毕业设计——基于HTML仿淘宝电商项目的设计与实现管理系统论文源码(21页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

毕业设计 stm32便携用电功率统计系统 -物联网 嵌入式 单片机

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 降压电路4.2 接口部分4.3 主控4.4 OLED模块5 部分核心代码5 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的…

小黑被劝退了,生活学习依然继续的leetcode之旅:572. 另一棵树的子树

小黑代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isSubtree(self, root: Optional[TreeNode],…

PyTorch~cpp_extension

还是pytorch哈~~ 结合 Python 与 C 各自的优点,在 PyTorch 中加入 C / CUDA的扩展,详细解释C/CUDA 算子实现和调用全流程 代码来源:MMCV, PyTorch。 https://github.com/open-mmlab/mmcv https://github.com/pytorch/pytorch 注&#xff1a…

python 编程 函数的返回值

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.函数 1.函数的返回值介绍 2.函数的返回值定义 例子: 3.函…

【图像去噪】均值+中值滤波图像去噪(含PNSR)【含GUI Matlab源码 372期】

⛄一、图像去噪及滤波简介 1 图像去噪 1.1 图像噪声定义 噪声是干扰图像视觉效果的重要因素,图像去噪是指减少图像中噪声的过程。噪声分类有三种:加性噪声,乘性噪声和量化噪声。我们用f(x,y)表示图像,g(x,y&#xff0…

面试题:进程 线程 协程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位 通俗的讲:进程可以理解为我们在电脑上正在运行的一个个应用,例如:QQ,微信,LOL…

数据结构---寻找一个整数所有数字全排列的下一个数

寻找一个整数所有数字全排列的下一个数储备知识第一步第二步第三步JAVA实现给出一个正整数,找出这个正整数所有数字全排列的下一个数。说通俗点就是在一个整数所包含数字的全部组合中,找到一个大于且仅大于原数的新整数。 例子: 如果输入123…