04.Nodejs操作MySQL

在Nodejs中操作MySQL数据库


MySQL数据库


SQL的基本使用


1.什么是SQL
SQL(英文全称: Structured Query Language)是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据。

三个关键点:

  1. SQL是一门数据库编程语言
  2. 使用SQL语言编写出来的代码,叫做SQL语句
  3. SQL语言尽能在关系型数据库中使用(例如MySQL、Oracle、SQL Server)。非关系型数据库(例如Mongodb)不支持SQL语言

2.SQL能做什么

  1. 从数据库中查询数据
  2. 向数据库中插入新的数据
  3. 更新数据库中的数据
  4. 从数据库删除数据
  5. 可以创建新数据库
  6. 可在数据库中创建新表
  7. 可在数据库中创建存储过程、视图
  8. etc...

SELECT语句


SELECT语句用于从表中查询数据。执行的结果被存储在一个结果表中(称为结果集)。语法格式如下:

-- 这是注释
-- 从FROM指定的[表中],查询出所有的数据.
SELECT * FROM 表名称

-- 从FROM指定的[表中],查询出指定 列名称[字段] 的数据
SELECT 列名称 FROM 表名称
-- 注意: SQL语句中的关键字对大小写不敏感。SELECT等效于selectFROM等双于from

实例:

image-20220327165711766

image-20220327165741777

INSERT INTO语句


INSERT INTO语句用于向数据表中插入新的数据行,语法格式如下:

-- 语法解读:向指定的表中,插入如下几列数据,列的值通过values——指定
-- 注意:列和值要——对应,多个列和多个值之间,使用英文的逗号分隔
INSERT INTO table_name(列1,列2,.. . ) VALUES (值1,值2,....)

实例:

image-20220327170432822

UPDATE语句


Update语句用于修改表中的数据。语法格式如下:

-- 语法解读:
-- 1、用 UPDATE 指定要更新哪个表中的数据
-- 2.用 SET 指定列对应的新值
-- 3,用 WHERE 指定更新的条件
UPDATE 表名称 SET 列名称=新值 WHERE 列名称=某值

实例:
image-20220327170721413

image-20220327170934636

DELETE语句


DELETE语句用于删除表中的行。语法格式如下:

--语法解读:
--从指定的表中,根据WHERE条件,删除对应的数据行
DELETE FROM 表名称 WHERE 列名称 =

实例:

image-20220327171140716

WHERE子句


WHERE子句用于限定选择的标准。在SELECT、UPDATE、DELETE语句中,皆可使用WHERE子句来限定选择的标准。比如:

image-20220327171333954

可在WHERE子句中使用的运算符:

操作符 描述
= 等于
<>也可以写作!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
AND与OR运算符

AND和OR可在WHERE子语句中把两个或多个条件结合起来。
AND表示必须同时满足多个条件,相当于JavaScript 中的&&运算符,例如 if (a !== 10 && a !== 20)
OR表示只要满足任意一个条件即可,相当于JavaScript 中的||运算符, 例如i if (a !== 10 || a !== 20)

实例:

image-20220327172643506

image-20220327172709544

ORDER BY 子句


ORDER BY语句用于根据指定的列对结果集进行排序。ORDER BY语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

实例:

image-20220327184721135

image-20220327184820259

image-20220327184909624

COUNT(*)函数


COUNT(*)函数用于返回查询结果的总数据条数,语法格式如下:

SELECT COUNT( * ) FROM 表名称

实例:

image-20220327185138543

使用AS关键字为列设置别名

实例:

image-20220327185346239

image-20220327185459662

在Nodejs中操作MySQL


操作步骤:

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

image-20220327212523702

安装与配置mysql模块


  1. 安装mysql

mysql模块是托管于npm 上的第三方模块。它提供了在Node.js项目中连接和操作MySQL数据库的能力。想要在项目中使用它,需要先运行如下命令,将mysql安装为项目的依赖包:

npm i mysql
  1. 配置相关环境

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

image-20220327212835068

const databar = mysql.createPool({
	host: '127.0.0.1',    //数据库的IP地址
	user: 'root',		 //登录数据库的账号
	password: '',		 //登录数据库的密码
	database: 'my_db_01'  //指定要操作的数据库
})

  1. 测试mysql模块是否能够正常工作

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

// 检测mysql模块是否正常工作
databar.query('SELECT 1',(err,results) =>{
	if(err) return console.log(err.message)
	//如果说能打印出[ RowDataPacket {'1' : 1} ] 的结果,就证明数据库连接正常
	console.log(results)
})

mysql操作语句


查询数据


//查询users表中所有的用户数据
//模糊查询 `SELECT * FROM book where bookname like '%${搜索关键词}%'`
databar.query( 'SELECT * FROM users ', (err, results) => {
	//查询失败
	if (err) return console.log(err.message)
	//查询成功
	console.log(results)
})
// 参数一: sql语句,操作数据库的核心
// 参数二: 回调函数
// 注意:如果执行select查询语句,则执行返回的结果是数组

插入数据


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

// 1. 定义需要插入到表中的数据对象
const user ={username:'SPider-Man', password:'pcc312'}
// 2. 待执行的SQL语句,其中的?表示占位符
const sqlStr = 'INSERT INTO users (username,password) VALUES(?,?)'
// 3. 使用数组形式,依次为?指定具体的值
databar.query(sqlStr, [user.username,user.password],(err.results)=>{
	if(err) return console.log(err.message)
	console.log(results.affectedRows === 1){console.log('插入数据成功')}
})

快捷插入数据

// 1. 定义需要插入到表中的数据对象
const user ={username:'SPider-Man', password:'pcc312'}
// 2. 待执行的SQL语句,其中的?表示占位符
const sqlStr = 'INSERT INTO users SET ?'
// 3. 直接为?指定具体的值
databar.query(sqlStr, user,(err.results)=>{
	if(err) return console.log(err.message)
	if(results.affectedRows === 1){console.log('插入数据成功')}
})

更新数据


// 1. 定义需要更新的数据对象
const user ={id:1 , username:'SPider-Man', password:'pcc312'}
// 2. 待执行的SQL语句,
const sqlStr = 'UPDATE users SET username = ? , password = ? , WHERE id = ?'
// 3. 调用databar.query()执行SQL语句的同时,依次为?指定具体的值
databar.query(sqlStr, [user.username, user.password, user.id],(err.results)=>{
	if(err) return console.log(err.message)
	if(results.affectedRows === 1){console.log('插入数据成功')}
})

快捷更新:

// 1. 定义需要更新的数据对象
const user ={id:1 , username:'SPider-Man', password:'pcc312'}
// 2. 待执行的SQL语句,
const sqlStr = 'UPDATE users SET ? , WHERE id = ?'
// 3. 调用databar.query()执行SQL语句的同时,依次为?指定具体的值
databar.query(sqlStr, [user, user.id],(err.results)=>{
	if(err) return console.log(err.message)
	if(results.affectedRows === 1){console.log('插入更新成功')}
})

删除数据


// 1. 待执行的SQL语句,
const sqlStr = 'DELETE FROM users WHERE id = ?'
// 2. 调用databar.query()执行SQL语句的同时,依次为?指定具体的值
//注意:如果SQL语句中有多个值,则必须使用数组为每个暂未符指定具体的值
//但如果只有一个占位符,则可以省略数组
databar.query(sqlStr, 7,(err.results)=>{
	if(err) return console.log(err.message)
	if(results.affectedRows === 1){console.log('删除数据成功')}
})

标记删除

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

所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。
当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。

//标记删除,使用UPDATE语句替代DELETE语句;只更新数据状态,而非真正删除
//像下面代码中的sql语句的意义是,当id=?时,将其status值变更为
databar.query('UPDATA USERS SET status=1 WHERE id=?', 6,(err.results)=>{
	if(err) return console.log(err.message)
	if(results.affectedRows === 1){console.log('删除数据成功')}
})
posted @   szfzb  阅读(216)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示