最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js對于數(shù)據(jù)庫MySQL基本操作實例總結(jié)【增刪改查】

 更新時間:2023年04月27日 11:01:32   作者:蕭寂173  
這篇文章主要介紹了node.js對于數(shù)據(jù)庫MySQL基本操作,結(jié)合實例形式總結(jié)分析了node.js針對mysql數(shù)據(jù)庫基本配置、連接與增刪改查相關(guān)操作技巧,需要的朋友可以參考下

數(shù)據(jù)庫MySQL基本操作(增刪改查)

整個博客統(tǒng)一表結(jié)構(gòu)為:
users表 四個字段id username password status,四個字段代表四列,其中id為自增列,status默認(rèn)值為0,可選值0,1
id自增, username分別為zs,ls,wu password分別為:123456 abcdef 123abc status為0,1,1

#查詢整張表的所有數(shù)據(jù)
select * from users

#查詢指定列的所有數(shù)據(jù)
select username,password from users

#指定某列添加數(shù)據(jù)
insert into users(username,password) values('蕭寂','1234')

#指定某列修改數(shù)據(jù)
update users set username="你好a",password="1234567",status=1 where id=2

#根據(jù)id刪除行
delete from users where id=4

#查詢status為1的所有用戶
SELECT *FROM users WHERE status=1

#查詢id 大于2的所有用戶
SELECT *FROM users WHERE id>2

#查詢username不等于admin的所有用戶
SELECT *FROM users WHERE username<>'admin'

#使用AND來顯示所有status為0,并且id 小于3的用戶:
SELECT * FROM users WHERE status=0 AND id<3

#使用OR來顯示所有status為1,或者username為zs的用戶
SELECT* FROM users WHERE status=1 OR username='zs'

#對users表中的數(shù)據(jù),按照status字段進(jìn)行升序排序
SELECT * FROM users ORDER BY status;(升序排序在status后加上ASC效果等同)
select * from users order by status asc

#根據(jù)id降序排序,降序排序使用desc關(guān)鍵字
select * from users order by id desc

#多重排序 對users 表中的數(shù)據(jù),先按照status字段進(jìn)行降序排序,再按照username的字母順序,進(jìn)行升序排序
SELECT * FROM users ORDER BY status DESC,username asc

#查詢id為1的數(shù)據(jù)返回的總條數(shù)
select count(*) from users where id=1

#將列名稱從COUNT(*)修改為total
SELECT COUNT(*) AS total FROM users WHERE id=1

#給username列添加uname別名,給password列添加upwd別名
select username as uname,password as upwd from users

node.js項目中的增刪改查

首先先執(zhí)行命令初始化package.json包

npm init -y  (文件名為英文,不能有空格、特殊字符或中文,否則報錯)

mysql模塊是托管于npm 上的第三方模塊。它提供了在Node.js項目中連接和操作MySQL數(shù)據(jù)庫的能力。
想要在項目中使用它,需要先運(yùn)行如下命令,將mysql安裝為項目的依賴包:

npm install mysql   或者  npm i mysql

上面操作完成后開始配置MySQL模塊

配置MySQL模塊

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

//導(dǎo)入MySQL模塊
const mysql = require("mysql")
//建立與MySQL數(shù)據(jù)庫的連接
const db = mysql.createPool({
    host: "127.0.0.1", //數(shù)據(jù)庫的IP地址
    user: "root",  //登錄數(shù)據(jù)庫的賬號
    password: "admin",  //登錄數(shù)據(jù)庫的密碼
    database: "xiaoji"  //指定要操作哪個數(shù)據(jù)庫
})

測試模塊能否正常連接工作(執(zhí)行運(yùn)行命令node 文件名 或者 nodemon 文件名)

調(diào)用db.query()函數(shù),指定要執(zhí)行的SQL語句,通過回調(diào)函數(shù)拿到執(zhí)行的結(jié)果

db.query("select 1", function (err, results) {
    //模塊報錯返回錯誤信息
    if (err) return console.log(err.message);
    //運(yùn)行成功
    console.log(results);
})

測試成功的返回結(jié)果為:[ RowDataPacket { ‘1’: 1 } ]

查詢表的SQL代碼(表名和結(jié)構(gòu)看第一行)

查詢數(shù)據(jù)user表中所有的用戶數(shù)據(jù)
const sqlStr = "select * from users"
db.query(sqlStr, function (err, results) {
    //查詢失敗
    if (err) return console.log(err.message);
    //查詢成功
    //注意如果執(zhí)行的是select查詢語句,則執(zhí)行的結(jié)果是數(shù)組
    console.log(results);
})

添加數(shù)據(jù)的SQL語句(兩種方法)

//插入數(shù)據(jù)
//向users表中新增數(shù)據(jù),其中username為Spider-Man,password為pcc321
//要插入到users表中的數(shù)據(jù)對象
const user = { username: "Spider-Man", password: "pcc321" }
//待執(zhí)行的SQL語句,其中的?表示占位符
const sqlStr = "insert into student(student,card) values(?,?)"
//使用數(shù)組的形式,依次為?占位符具體的值(result.affectedRows為影響的行數(shù))
db.query(sqlStr, [user.username, user.password], function (err, results) {
    if (err) return console.log(err.message);
    if (results.affectedRows == 1) {
        console.log("插入成功");
    }
})
//向表中新增數(shù)據(jù)時,如果數(shù)據(jù)對象的每個屬性和數(shù)據(jù)表的字段一一對應(yīng),則可以通過如下方式快速插入數(shù)據(jù):
//要插入到users表中的數(shù)據(jù)對象
const user = { username: "Spider2-Man", password: "pcc321" }
//待執(zhí)行的SQL語句,其中的?表示占位符
const sqlStr = "insert into users set ?"
db.query(sqlStr, user, function (err, results) {
    if (err) return console.log(err.message);
    if (results.affectedRows == 1) {
        console.log("插入成功");
    }
})

修改數(shù)據(jù)的SQL語句(兩種方法)

//修改表中的數(shù)據(jù)
//向users表中更新的數(shù)據(jù),其中username為Spider-Man,password為pcc321,id為5
const user = { id: 7, username: "xiao1jiao", password: "111222" }
//待執(zhí)行的sql語句,其中的?表示占位符
const sqlStr = "update users set username=?,password=? where id=?"
//使用數(shù)組的形式,依次為?占位符具體的值(result.affectedRows為影響的行數(shù))
db.query(sqlStr, [user.username, user.password, user.id], function (err, results) {
    if (err) return console.log(err.message);
    if (results.affectedRows == 1) {
        console.log("修改", user.id, "列成功");
    }
})
//修改表數(shù)據(jù)時,如果數(shù)據(jù)對象的每個屬性和數(shù)據(jù)表的字段一一對應(yīng),則可以通過如下方式快速修改表數(shù)據(jù)
//向users表中更新的數(shù)據(jù),其中username為aaaa,password為1111,id為5
const user = { id: 5, username: "aaaa", password: "1111" }
//待執(zhí)行的sql語句,其中的?表示占位符
const sqlStr = "update users set ? where id=?"
//使用數(shù)組的形式,依次為?占位符具體的值(result.affectedRows為影響的行數(shù))
db.query(sqlStr, [user, user.id], function (err, results) {
if (err) return console.log(err.message);
if (results.affectedRows == 1) {
    console.log("修改", user.id, "列成功");
}
})

刪除數(shù)據(jù)的SQL語句

//在刪除數(shù)據(jù)時,推薦根據(jù)id這樣的唯一標(biāo)識,來刪除對應(yīng)的數(shù)據(jù)。示例如下:
const sqlStr = "delete from users where id=?"
//調(diào)用db.query(O)執(zhí)行SQL語句的同時,為占位符指定具體的值
//注意:如果SQL語句中有多個占位符,則必須使用數(shù)組為每個占位符指定具體的值
//如果SQL語句中只有一個占位符,則可以省略數(shù)組
db.query(sqlStr, 5, function (err, results) {
    if (err) return console.log(err.message);
    //注意:執(zhí)行 delete語句之后,結(jié)果也是一個對象,也會包含 affectedRows屬性
    if (results.affectedRows == 1) {
        console.log("刪除成功");
    }
})

標(biāo)記刪除的情況

//標(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)記刪除:使用 UPDATE語句替代 DELETE語句;只更新數(shù)據(jù)的狀態(tài),并沒有真正刪除
const sqlStr = "update users set status=? where id=?"
db.query(sqlStr, [0, 7], function (err, results) {
    if (err) return console.log(err.message);
    if (results.affectedRows == 1) {
        console.log("標(biāo)記刪除成功");
    }
})

注:文章所述的?占位符標(biāo)記方法具有更好的兼容行,筆者曾經(jīng)做過測試,使用原生SQL語句拼接字段后直接使用db.query語句執(zhí)行,結(jié)果在處理富文本數(shù)據(jù)的時候報出了錯誤,需要進(jìn)行字符轉(zhuǎn)義處理。而使用?占位符則不會有這種情況出現(xiàn)。

因為?占位符操作會在解析的過程中自動對傳入?yún)?shù)進(jìn)行編碼處理,進(jìn)一步增加了程序的安全性!

相關(guān)文章

  • Node.js實現(xiàn)批量下載圖片簡單操作示例

    Node.js實現(xiàn)批量下載圖片簡單操作示例

    這篇文章主要介紹了Node.js實現(xiàn)批量下載圖片簡單操作,結(jié)合實例形式分析了node.js批量下載圖片的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01
  • 使用Node.js寫一個代碼生成器的方法步驟

    使用Node.js寫一個代碼生成器的方法步驟

    這篇文章主要介紹了使用 Node.js 寫一個代碼生成器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 詳解Node.js使用token進(jìn)行認(rèn)證的簡單示例

    詳解Node.js使用token進(jìn)行認(rèn)證的簡單示例

    這篇文章主要介紹了詳解Node.js使用token進(jìn)行認(rèn)證的簡單示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • nodejs dgram模塊廣播+組播的實現(xiàn)示例

    nodejs dgram模塊廣播+組播的實現(xiàn)示例

    這篇文章主要介紹了nodejs dgram模塊廣播+組播的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 詳解Node.js中的模塊化方法

    詳解Node.js中的模塊化方法

    這篇文章主要為大家介紹了Node.js的模塊化,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Node.js Express安裝與使用教程

    Node.js Express安裝與使用教程

    Express 是一個簡潔而靈活的 node.js Web應(yīng)用框架, 提供了一系列強(qiáng)大特性幫助你創(chuàng)建各種 Web 應(yīng)用,這篇文章主要介紹了Node.js Express安裝與使用教程,非常具有實用價值,需要的朋友可以參考下
    2018-05-05
  • Node.js中的異步生成器與異步迭代詳解

    Node.js中的異步生成器與異步迭代詳解

    這篇文章主要給大家介紹了關(guān)于Node.js中異步生成器與異步迭代的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼

    使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼

    這篇文章主要介紹了使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下
    2017-08-08
  • Node.js重新刷新session過期時間的方法

    Node.js重新刷新session過期時間的方法

    在Node.js中,我們通常使用express-session這個包來使用和管理session,保存服務(wù)端和客戶端瀏覽器之間的會話狀態(tài)。那如何才能實現(xiàn)當(dāng)用戶刷新當(dāng)前頁面或者點擊頁面上的按鈕時重新刷新session的過期時間呢,接下來通過本文一起學(xué)習(xí)吧
    2016-02-02
  • Node+Express連接MySQL實現(xiàn)增刪改查功能

    Node+Express連接MySQL實現(xiàn)增刪改查功能

    這篇文章主要為大家詳細(xì)介紹了Node如何結(jié)合Express連接MySQL實現(xiàn)增刪改查功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-05-05

最新評論

闵行区| 明光市| 延津县| 曲水县| 荔浦县| 迁安市| 福安市| 武强县| 乌什县| 东兴市| 太谷县| 镇坪县| 营山县| 和政县| 左权县| 长春市| 平阴县| 长宁县| 博客| 绥棱县| 南雄市| 闵行区| 朔州市| 云和县| 沾益县| 巴青县| 禹州市| 北票市| 察雅县| 大石桥市| 全州县| 西城区| 冕宁县| 海丰县| 湖州市| 巴林左旗| 和硕县| 东至县| 乐至县| 西乌| 永福县|