NodeJs操作MYSQL方法詳細(xì)介紹
在項目中操作數(shù)據(jù)庫的步驟
① 安裝操作 MySQL 數(shù)據(jù)庫的第三方模塊(mysql)
② 通過 mysql 模塊連接到 MySQL 數(shù)據(jù)庫
③ 通過 mysql 模塊執(zhí)行 SQL 語句
安裝與配置 mysql 模塊
1. 安裝 mysql 模塊
mysql 模塊是托管于 npm 上的第三方模塊。它提供了在 Node.js 項目中連接和操作 MySQL 數(shù)據(jù)庫的能力。
想要在項目中使用它,需要先運行如下命令,將 mysql 安裝為項目的依賴包:
npm install mysql
2. 配置 mysql 模塊
在使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫之前,必須先對 mysql 模塊進行必要的配置,主要的配置步驟如下:
// 1. 導(dǎo)入 mysql 模塊 const mysql = require('mysql') // 2. 建立與 MySQL 數(shù)據(jù)庫的連接關(guān)系 const db = mysql.createPool({ host: '127.0.0.1', // 數(shù)據(jù)庫的 IP 地址 user: 'root', // 登錄數(shù)據(jù)庫的賬號 password: '123456', // 登錄數(shù)據(jù)庫的密碼 database: 'mydb01', // 指定要操作哪個數(shù)據(jù)庫 })
3. 測試 mysql 模塊能否正常工作
調(diào)用 db.query() 函數(shù),指定要執(zhí)行的 SQL 語句,通過回調(diào)函數(shù)拿到執(zhí)行的結(jié)果:
// 測試 mysql 模塊能否正常工作 db.query('select 1', (err, results) => { // mysql 模塊工作期間報錯了 if(err) return console.log(err.message) // 能夠成功的執(zhí)行 SQL 語句 console.log(results) })
使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫
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 查詢語句,則執(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 語句,?為占位符 const sqlStr = 'insert into user (username, password,status) values (?, ?,?)' // 執(zhí)行 SQL 語句,使用數(shù)組的形式依次為?占位符指定具體的值 db.query(sqlStr, [userdata.username, userdata.password,userdata.status], (err, results) => { // 執(zhí)行 SQL 語句失敗了 if (err) return console.log(err.message) // 成功了 // 注意:如果執(zhí)行的是 insert into 插入語句,則 results 是一個對象 // 可以通過 affectedRows 屬性,來判斷是否插入數(shù)據(jù)成功 if (results.affectedRows === 1) { console.log('插入數(shù)據(jù)成功!') } })
3. 插入數(shù)據(jù)的便捷方式
向user表中新增數(shù)據(jù)時,如果數(shù)據(jù)對象的每個屬性和數(shù)據(jù)表的字段一一對應(yīng),則可以通過如下方式快速插入數(shù)據(jù):
// 演示插入數(shù)據(jù)的便捷方式 const userdata = { username: 'Spider-Man2', password: 'pcc4321',status:'0'} // 定義待執(zhí)行的 SQL 語句 const sqlStr = 'insert into user set ?' // 執(zhí)行 SQL 語句 db.query(sqlStr, userdata, (err, results) => { if (err) return console.log(err.message) if (results.affectedRows === 1) { console.log('插入數(shù)據(jù)成功') } })
4. 更新數(shù)據(jù)
可以通過如下方式,更新表中的數(shù)據(jù)
// 演示如何更新用戶的信息 const userdata = { id: 15, username: 'aaa', password: '000' } // 定義 SQL 語句 const sqlStr = 'update user set username=?, password=? where id=?' // 執(zhí)行 SQL 語句 db.query(sqlStr, [userdata.username, userdata.password, userdata.id], (err, results) => { if (err) return console.log(err.message) // 注意:執(zhí)行了 update 語句之后,執(zhí)行的結(jié)果,也是一個對象,可以通過 affectedRows 判斷是否更新成功 if (results.affectedRows === 1) { console.log('更新成功') } })
5. 更新數(shù)據(jù)的便捷方式
更新表數(shù)據(jù)時,如果數(shù)據(jù)對象的每個屬性和數(shù)據(jù)表的字段一一對應(yīng),則可以通過如下方式快速更新表數(shù)據(jù):
// 演示更新數(shù)據(jù)的便捷方式 const userdata = { id: 6, username: 'aaaa', password: '0000' } // 定義 SQL 語句 const sqlStr = 'update users set ? where id=?' // 執(zhí)行 SQL 語句 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ù)時,推薦根據(jù) id 這樣的唯一標(biāo)識,來刪除對應(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 語句之后,結(jié)果也是一個對象,也會包含 affectedRows 屬性 if (results.affectedRows === 1) { console.log('刪除數(shù)據(jù)成功') } })
7. 標(biāo)記刪除
使用 DELETE 語句,會把真正的把數(shù)據(jù)從表中刪除掉。為了保險起見,推薦使用標(biāo)記刪除的形式,來模擬刪除的動作。
所謂的標(biāo)記刪除,就是在表中設(shè)置類似于 status 這樣的狀態(tài)字段,來標(biāo)記當(dāng)前這條數(shù)據(jù)是否被刪除。
當(dāng)用戶執(zhí)行了刪除的動作時,我們并沒有執(zhí)行 DELETE 語句把數(shù)據(jù)刪除掉,而是執(zhí)行了 UPDATE 語句,將這條數(shù)據(jù)對應(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用nodejs連接mySQL寫接口全過程(增刪改查)
- nodejs+mysql實現(xiàn)用戶相關(guān)的增刪改查的詳細(xì)操作
- 三分鐘教會你用nodejs操作mysql數(shù)據(jù)庫
- Nodejs?連接?mysql時報Error:?Cannot?enqueue?Query?after?fatal?error錯誤的處理辦法
- nodejs中關(guān)于mysql數(shù)據(jù)庫的操作
- Nodejs中koa2連接mysql的實現(xiàn)示例
- NodeJs+MySQL實現(xiàn)注冊登錄功能
- nodejs連接mysql數(shù)據(jù)庫及基本知識點詳解
- nodejs實現(xiàn)的連接MySQL數(shù)據(jù)庫功能示例
- Nodejs連接mysql并實現(xiàn)增、刪、改、查操作的方法詳解
- NodeJS連接MySQL數(shù)據(jù)庫并進行增刪改查操作詳解
相關(guān)文章
解決下載了nodejs但npm?-v沒有反應(yīng)問題的全過程
最近工作中遇到了個問題,node安裝成功,但npm無法使用,所以下面這篇文章主要給大家介紹了關(guān)于下載了nodejs但npm?-v沒有反應(yīng)問題解決的相關(guān)資料,需要的朋友可以參考下2022-08-08利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式
這篇文章主要介紹了利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08node.js中的buffer.Buffer.byteLength方法使用說明
這篇文章主要介紹了node.js中的buffer.Buffer.byteLength方法使用說明,本文介紹了buffer.Buffer.byteLength的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12