网站首页 > 技术文章 正文
要想在项目中操作数据库, 首先要安装操作 MySQL 数据库的第三方模块(mysql), 借助mysql 模块连接到 MySQL 数据库, 执行 SQL 语句,具体的流程如下图所示。
安装与配置 mysql 模块
1. 安装 mysql 模块
mysql 模块是托管于 npm 上的第三方模块。它提供了在 Node.js 项目中连接和操作 MySQL 数据库的能力。 想要在项目中使用它,需要先运行如下命令,将 mysql 安装为项目的依赖包:
npm install mysql
2. 配置 mysql 模块
在使用 mysql 模块操作 MySQL 数据库之前,必须先对 mysql 模块进行必要的配置,主要的配置步骤如下:
// 1.导入mysq1模块
const mysql = require('mysql')
// 2.建立与 MySQL数据库的连接
const db = mysql.createPool({
host: '127.0.0.1', //数据库的IP地址
user: 'root', //登录数据库的账号
password:‘admin123', //登录数据库的密码
database:‘my_db_01' //指定要操作哪个数据库
})
3. 测试 mysql 模块能否正常工作
调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
//检测mysq1模块能否正常工作
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('SELECT * 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('插入数据成功') } // 成功
})
3. 插入数据的便捷方式
向表中新增数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:
// 1. 要插入到users表中的数据对象
const (vser = { 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('插入数据成功')}//成功
})
4. 更新数据
可以通过如下方式,更新表中的数据:
// 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.affectedRows===1){console.log('更新数据成功!')}//成功
})
5. 更新数据的便捷方式
更新表数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速更新表数据:
// 1. 要更新的数据对象
const user = { id: 7, username: 'aaaa', password: '0000' }
// 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('更新数据成功!') } //成功
})
6. 删除数据
在删除数据时,推荐根据 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('删除数据成功!‘)}//成功
})
7. 标记删除
使用 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('删除数据成功!')}//成功
})
- 上一篇: 前端如何入门?分享入门经验 前端实用技巧
- 下一篇: Web开发之浏览器数据库存储解决方案的选择和使用
猜你喜欢
- 2025-06-08 Directus 火了!无代码 SQL 数据的协作应用利器!
- 2025-06-08 PHP和NodeJS的代码执行效率比较(php和nodejs的区别)
- 2025-06-08 工商银行获得发明专利授权:“基于数据库映射动态接口的前端页面应用开发方法及装置”
- 2025-06-08 FAISS和Chroma:两种流行的向量数据库的比较
- 2025-06-08 什么是数据库的索引?(数据库索引的定义和作用)
- 2025-06-08 Vercel和Neon“首次”推出用于前端云的无服务器SQL数据库
- 2025-06-08 记一次前端逻辑绕过登录到内网挖掘
- 2025-06-08 学Access好还是MySQL好?(access与mysql的语句区别)
- 2024-09-29 技术: Java语言,后端:springboot 前端:JSP数据库
- 2024-09-29 「免费开源」基于Vue和Quasar的前端SPA项目实战之数据库逆向
你 发表评论:
欢迎- 581℃几个Oracle空值处理函数 oracle处理null值的函数
- 576℃Oracle分析函数之Lag和Lead()使用
- 561℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 561℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 556℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 546℃【数据统计分析】详解Oracle分组函数之CUBE
- 535℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 530℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)