欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js如何在項(xiàng)目中操作MySQL

 更新時(shí)間:2022年01月13日 10:17:10   作者:bear*6  
這篇文章主要介紹了Node.js如何在項(xiàng)目中操作MySQL,從而實(shí)現(xiàn)數(shù)據(jù)的查詢、插入、更新和刪除等操作,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1、在項(xiàng)目中操作 MySQL的步驟

(1)安裝操作 MySQL 數(shù)據(jù)庫(kù)的第三方模塊(mysql)

(2)通過(guò) mysql 模塊連接到 MySQL 數(shù)據(jù)庫(kù)

(3)通過(guò) mysql 模塊執(zhí)行 SQL 語(yǔ)句

在這里插入圖片描述

2、安裝與配置 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 數(shù)據(jù)庫(kù)中有如下數(shù)據(jù):

在這里插入圖片描述

在使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫(kù)之前,必須先對(duì) mysql 模塊進(jìn)行必要的配置,主要的配置步驟如下:

//導(dǎo)入模塊
const mysql = require('mysql')
//建立與mysql數(shù)據(jù)庫(kù)的聯(lián)系
const db = mysql.createPool({
    host:'127.0.0.1',   //數(shù)據(jù)庫(kù)的IP地址
    user:'root',        //登錄數(shù)據(jù)庫(kù)的賬號(hào)
    password:'******',//登錄數(shù)據(jù)庫(kù)的密碼
    database:'bear2'     //指定要操作哪個(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)=>{
    if(err) return console.log(err.message)
    //能夠成功的執(zhí)行SQL語(yǔ)句
    console.log(results)
})

測(cè)試結(jié)果為:

在這里插入圖片描述

3、使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫(kù)

1、查詢數(shù)據(jù)

查詢 student 表中所有的數(shù)據(jù):

db.query('SELECT * FROM STUDENT',(err,results)=>{
    //查詢失敗
    if(err) return console.log(err.message)
    //查詢成功
    console.log(results)
})

結(jié)果為:

在這里插入圖片描述

查詢成功,且得到的結(jié)果是一個(gè)數(shù)組。

2、插入數(shù)據(jù)

student表中新增數(shù)據(jù), 其中 cname'小延'age16。示例代碼如下:

//要插入到student表中的數(shù)據(jù)對(duì)象
const student = {cname:'小延',age:16}
//待執(zhí)行的SQL語(yǔ)句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO student(cname,age)VALUES(?,?)'
//使用數(shù)組的形式,依次為占位符指定具體的值
db.query(sqlStr,[student.cname,student.age],(err,results)=>{
    if(err) return console.log(err.message) //失敗
    if(results.affectedRows === 1){
        console.log('插入成功') //成功
    }
})

結(jié)果為:

在這里插入圖片描述

打開(kāi)數(shù)據(jù)庫(kù),查看數(shù)據(jù),即:

在這里插入圖片描述

數(shù)據(jù)插入成功。

3、插入數(shù)據(jù)的便捷方式

向表中新增數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表的字段一一對(duì)應(yīng),則可以通過(guò)如下方式快速插入數(shù)據(jù):

//要插入到student表中的數(shù)據(jù)對(duì)象
const student = {cid:9,cname:'小楊',age:18,class_id:1002}
//待執(zhí)行的SQL語(yǔ)句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO student SET ?'
//直接將數(shù)據(jù)對(duì)象當(dāng)做占位符的值
db.query(sqlStr,student,(err,results)=>{
    if(err) return console.log(err.message) //失敗
    if(results.affectedRows === 1) console.log('插入數(shù)據(jù)成功!')
})

結(jié)果為:

在這里插入圖片描述

打開(kāi)數(shù)據(jù)庫(kù),查看數(shù)據(jù),即:

在這里插入圖片描述

數(shù)據(jù)插入成功。

4、更新數(shù)據(jù)

可以通過(guò)如下方式,更新表中的數(shù)據(jù):

//要更新的數(shù)據(jù)對(duì)象
const student = {cid: 8, cname: '小欣', age: 18, class_id: 1002}
//要執(zhí)行的SQL語(yǔ)句
const sqlStr = 'UPDATE student SET cname=?,age=?,class_id=? WHERE cid=?'
//調(diào)用db.query()執(zhí)行SQL語(yǔ)句的同時(shí),使用數(shù)組依次為占位符指定具體的值
db.query(sqlStr,[student.cname,student.age,student.class_id],(err,results)=>{
    if(err) return console.log(err.message) //失敗
    if(results.affectedRows === 1) {
        console.log('更新數(shù)據(jù)成功!')
    }
})

結(jié)果為:

在這里插入圖片描述

打開(kāi)數(shù)據(jù)庫(kù),查看數(shù)據(jù),即:

在這里插入圖片描述

數(shù)據(jù)更新成功。

5、更新數(shù)據(jù)的便捷方式

更新表數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表的字段一一對(duì)應(yīng),則可以通過(guò)如下方式快速更新表數(shù)據(jù):

const student = {cid:1,cname:'小鈺',age:17,class_id:1003}
//要執(zhí)行的SQL語(yǔ)句
const sqlStr = 'UPDATE student SET ? WHERE cid=?'
調(diào)用db.query()執(zhí)行SQL語(yǔ)句的同時(shí),使用數(shù)組依次為占位符指定具體的值
db.query(sqlStr,[student,student.cid],(err,results)=>{
    if(err) return console.log(err.message) //失敗
    if(results.affectedRows === 1){
        console.log('數(shù)據(jù)更新成功!')  //成功
    }
})

結(jié)果為:

在這里插入圖片描述

打開(kāi)數(shù)據(jù)庫(kù),查看數(shù)據(jù),即:

在這里插入圖片描述

數(shù)據(jù)更新成功。

6、刪除數(shù)據(jù)

在刪除數(shù)據(jù)時(shí),最好根據(jù) cid 這樣的唯一標(biāo)識(shí),來(lái)刪除對(duì)應(yīng)的數(shù)據(jù)。示例如下:

//要執(zhí)行的SQL語(yǔ)句
const sqlStr = 'DELETE FROM student WHERE cid=?'
//調(diào)用db.query()執(zhí)行sql語(yǔ)句的同時(shí),為占位符指定確定的值
db.query(sqlStr,3,(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){  // 失敗
        console.log('刪除數(shù)據(jù)成功!') //成功
    }
})

結(jié)果為:

在這里插入圖片描述

打開(kāi)數(shù)據(jù)庫(kù),查看數(shù)據(jù),即:

在這里插入圖片描述

刪除數(shù)據(jù)成功。

需要注意的是:如果SQL語(yǔ)句有多個(gè)占位符,則必須為每個(gè)占位符指定具體的值,如果SQL語(yǔ)句只有一個(gè)占位符,則可以省略數(shù)組。

7、標(biāo)記刪除

使用 DELETE 語(yǔ)句,會(huì)把真正的把數(shù)據(jù)從表中刪除掉。為了保險(xiǎn)起見(jiàn),推薦使用標(biāo)記刪除的形式,來(lái)模擬刪除的動(dòng)作。

所謂的標(biāo)記刪除,就是在表中設(shè)置類似于 class_id 這樣的狀態(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)的class_id字段標(biāo)記為刪除即可。

//標(biāo)記刪除:使用UPDATE語(yǔ)句代替DELETE語(yǔ)句;只更新數(shù)據(jù)的狀態(tài),并沒(méi)有真正刪除。
db.query('UPDATE student SET class_id=? WHERE cid=?',[1000,6],(err,results)=>{
    if(err) return console.log(err.message)
    if(results.affectedRows === 1){  // 失敗
        console.log('標(biāo)記刪除成功!') //成功
    }
})

結(jié)果為:

在這里插入圖片描述

打開(kāi)數(shù)據(jù)庫(kù),查看數(shù)據(jù),即:

在這里插入圖片描述

標(biāo)記刪除成功。

以上就是Node.js如何在項(xiàng)目中操作MySQL的詳細(xì)內(nèi)容,更多關(guān)于Node.js操作MySQL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論