NodeJs操作MYSQL方法詳細(xì)介紹
在項(xiàng)目中操作數(shù)據(jù)庫(kù)的步驟
① 安裝操作 MySQL 數(shù)據(jù)庫(kù)的第三方模塊(mysql)
② 通過(guò) mysql 模塊連接到 MySQL 數(shù)據(jù)庫(kù)
③ 通過(guò) mysql 模塊執(zhí)行 SQL 語(yǔ)句

安裝與配置 mysql 模塊
1. 安裝 mysql 模塊
mysql 模塊是托管于 npm 上的第三方模塊。它提供了在 Node.js 項(xiàng)目中連接和操作 MySQL 數(shù)據(jù)庫(kù)的能力。
想要在項(xiàng)目中使用它,需要先運(yùn)行如下命令,將 mysql 安裝為項(xiàng)目的依賴包:
npm install mysql
2. 配置 mysql 模塊
在使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫(kù)之前,必須先對(duì) mysql 模塊進(jìn)行必要的配置,主要的配置步驟如下:
// 1. 導(dǎo)入 mysql 模塊
const mysql = require('mysql')
// 2. 建立與 MySQL 數(shù)據(jù)庫(kù)的連接關(guān)系
const db = mysql.createPool({
host: '127.0.0.1', // 數(shù)據(jù)庫(kù)的 IP 地址
user: 'root', // 登錄數(shù)據(jù)庫(kù)的賬號(hào)
password: '123456', // 登錄數(shù)據(jù)庫(kù)的密碼
database: 'mydb01', // 指定要操作哪個(gè)數(shù)據(jù)庫(kù)
})3. 測(cè)試 mysql 模塊能否正常工作
調(diào)用 db.query() 函數(shù),指定要執(zhí)行的 SQL 語(yǔ)句,通過(guò)回調(diào)函數(shù)拿到執(zhí)行的結(jié)果:
// 測(cè)試 mysql 模塊能否正常工作
db.query('select 1', (err, results) => {
// mysql 模塊工作期間報(bào)錯(cuò)了
if(err) return console.log(err.message)
// 能夠成功的執(zhí)行 SQL 語(yǔ)句
console.log(results)
})

使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫(kù)
1. 查詢數(shù)據(jù)
查詢 user表中所有的數(shù)據(jù)
// 查詢 user 表中所有的數(shù)據(jù)
const sqlStr = 'select * from user'
db.query(sqlStr, (err, results) => {
// 查詢數(shù)據(jù)失敗
if (err) return console.log(err.message)
// 查詢數(shù)據(jù)成功
// 注意:如果執(zhí)行的是 select 查詢語(yǔ)句,則執(zhí)行的結(jié)果是數(shù)組
console.log(results)
})

2. 插入數(shù)據(jù)
向 user 表中新增數(shù)據(jù), 其中 username 為 Spider-Man,password 為 pcc321,status為0。示例代碼如下:
// 向 user 表中,新增一條數(shù)據(jù),其中 username 的值為 Spider-Man,password 的值為 pcc123,status為0
const userdata = { username: 'Spider-Man', password: 'pcc123',status:"0" }
// 定義待執(zhí)行的 SQL 語(yǔ)句,?為占位符
const sqlStr = 'insert into user (username, password,status) values (?, ?,?)'
// 執(zhí)行 SQL 語(yǔ)句,使用數(shù)組的形式依次為?占位符指定具體的值
db.query(sqlStr, [userdata.username, userdata.password,userdata.status], (err, results) => {
// 執(zhí)行 SQL 語(yǔ)句失敗了
if (err) return console.log(err.message)
// 成功了
// 注意:如果執(zhí)行的是 insert into 插入語(yǔ)句,則 results 是一個(gè)對(duì)象
// 可以通過(guò) affectedRows 屬性,來(lái)判斷是否插入數(shù)據(jù)成功
if (results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功!')
}
})

3. 插入數(shù)據(jù)的便捷方式
向user表中新增數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表的字段一一對(duì)應(yīng),則可以通過(guò)如下方式快速插入數(shù)據(jù):
// 演示插入數(shù)據(jù)的便捷方式
const userdata = { username: 'Spider-Man2', password: 'pcc4321',status:'0'}
// 定義待執(zhí)行的 SQL 語(yǔ)句
const sqlStr = 'insert into user set ?'
// 執(zhí)行 SQL 語(yǔ)句
db.query(sqlStr, userdata, (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功')
}
}) 4. 更新數(shù)據(jù)
可以通過(guò)如下方式,更新表中的數(shù)據(jù)
// 演示如何更新用戶的信息
const userdata = { id: 15, username: 'aaa', password: '000' }
// 定義 SQL 語(yǔ)句
const sqlStr = 'update user set username=?, password=? where id=?'
// 執(zhí)行 SQL 語(yǔ)句
db.query(sqlStr, [userdata.username, userdata.password, userdata.id], (err, results) => {
if (err) return console.log(err.message)
// 注意:執(zhí)行了 update 語(yǔ)句之后,執(zhí)行的結(jié)果,也是一個(gè)對(duì)象,可以通過(guò) affectedRows 判斷是否更新成功
if (results.affectedRows === 1) {
console.log('更新成功')
}
})

5. 更新數(shù)據(jù)的便捷方式
更新表數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表的字段一一對(duì)應(yīng),則可以通過(guò)如下方式快速更新表數(shù)據(jù):
// 演示更新數(shù)據(jù)的便捷方式
const userdata = { id: 6, username: 'aaaa', password: '0000' }
// 定義 SQL 語(yǔ)句
const sqlStr = 'update users set ? where id=?'
// 執(zhí)行 SQL 語(yǔ)句
db.query(sqlStr, [userdata, userdata.id], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('更新數(shù)據(jù)成功')
}
}) 6. 刪除數(shù)據(jù)
在刪除數(shù)據(jù)時(shí),推薦根據(jù) id 這樣的唯一標(biāo)識(shí),來(lái)刪除對(duì)應(yīng)的數(shù)據(jù)。示例如下:
// 刪除 id 為 5 的用戶
const sqlStr = 'delete from user where id=?'
db.query(sqlStr, 5, (err, results) => {
if (err) return console.log(err.message)
// 注意:執(zhí)行 delete 語(yǔ)句之后,結(jié)果也是一個(gè)對(duì)象,也會(huì)包含 affectedRows 屬性
if (results.affectedRows === 1) {
console.log('刪除數(shù)據(jù)成功')
}
})
7. 標(biāo)記刪除
使用 DELETE 語(yǔ)句,會(huì)把真正的把數(shù)據(jù)從表中刪除掉。為了保險(xiǎn)起見(jiàn),推薦使用標(biāo)記刪除的形式,來(lái)模擬刪除的動(dòng)作。
所謂的標(biāo)記刪除,就是在表中設(shè)置類似于 status 這樣的狀態(tài)字段,來(lái)標(biāo)記當(dāng)前這條數(shù)據(jù)是否被刪除。
當(dāng)用戶執(zhí)行了刪除的動(dòng)作時(shí),我們并沒(méi)有執(zhí)行 DELETE 語(yǔ)句把數(shù)據(jù)刪除掉,而是執(zhí)行了 UPDATE 語(yǔ)句,將這條數(shù)據(jù)對(duì)應(yīng)的 status 字段標(biāo)記為刪除即可。
// 標(biāo)記刪除
const sqlStr = 'update user set status=? where id=?'
db.query(sqlStr, [1, 6], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('標(biāo)記刪除成功')
}
})到此這篇關(guān)于NodeJs操作MYSQL方法詳細(xì)介紹的文章就介紹到這了,更多相關(guān)NodeJs操作MYSQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用nodejs連接mySQL寫(xiě)接口全過(guò)程(增刪改查)
- nodejs+mysql實(shí)現(xiàn)用戶相關(guān)的增刪改查的詳細(xì)操作
- 三分鐘教會(huì)你用nodejs操作mysql數(shù)據(jù)庫(kù)
- Nodejs?連接?mysql時(shí)報(bào)Error:?Cannot?enqueue?Query?after?fatal?error錯(cuò)誤的處理辦法
- nodejs中關(guān)于mysql數(shù)據(jù)庫(kù)的操作
- Nodejs中koa2連接mysql的實(shí)現(xiàn)示例
- NodeJs+MySQL實(shí)現(xiàn)注冊(cè)登錄功能
- nodejs連接mysql數(shù)據(jù)庫(kù)及基本知識(shí)點(diǎn)詳解
- nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能示例
- Nodejs連接mysql并實(shí)現(xiàn)增、刪、改、查操作的方法詳解
- NodeJS連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作詳解
相關(guān)文章
nodejs連接mysql數(shù)據(jù)庫(kù)及基本知識(shí)點(diǎn)詳解
這篇文章主要介紹了nodejs連接mysql數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式總結(jié)分析了nodejs連接與操作mysql數(shù)據(jù)庫(kù)的相關(guān)模板、配置及mysql數(shù)據(jù)庫(kù)查詢、添加數(shù)據(jù)等操作技巧,需要的朋友可以參考下2018-03-03
Nodejs實(shí)現(xiàn)爬蟲(chóng)抓取數(shù)據(jù)實(shí)例解析
這篇文章主要介紹了Nodejs實(shí)現(xiàn)爬蟲(chóng)抓取數(shù)據(jù)實(shí)例解析,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
獨(dú)立部署小程序基于nodejs的服務(wù)器過(guò)程詳解
這篇文章主要介紹了獨(dú)立部署小程序基于nodejs的服務(wù)器過(guò)程詳解,完全自定義的部署小程序服務(wù)器, 不依托于騰訊云服務(wù)器體系. 以阿里云服務(wù)器為基礎(chǔ)建立.服務(wù)器語(yǔ)言選用nodejs.,需要的朋友可以參考下2019-06-06
詳解從買(mǎi)域名到使用pm2部署node.js項(xiàng)目全過(guò)程
本篇文章主要介紹了詳解從買(mǎi)域名到使用pm2部署node.js項(xiàng)目全過(guò)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
基于websocket實(shí)現(xiàn)簡(jiǎn)單聊天室對(duì)話
這篇文章主要為大家詳細(xì)介紹了基于websocket實(shí)現(xiàn)簡(jiǎn)單聊天室對(duì)話,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
關(guān)于Node.js中Buffer的一些你可能不知道的用法
網(wǎng)上關(guān)于Node.js中Buffer用法的文章有很多,但是感覺(jué)還是不夠詳細(xì),所以這篇文章主要介紹了關(guān)于Node.js中Buffer的一些你可能不知道的用法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03
node.js中RPC(遠(yuǎn)程過(guò)程調(diào)用)的實(shí)現(xiàn)原理介紹
這篇文章主要介紹了node.js中RPC(遠(yuǎn)程過(guò)程調(diào)用)的實(shí)現(xiàn)原理介紹,本文基于一個(gè)簡(jiǎn)單的RPC庫(kù)nodejs light_rpc實(shí)現(xiàn),需要的朋友可以參考下2014-12-12

