中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node.js對于數據庫MySQL基本操作方法有哪些

發布時間:2023-04-27 17:51:20 來源:億速云 閱讀:142 作者:iii 欄目:開發技術

本篇內容介紹了“node.js對于數據庫MySQL基本操作方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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

整個博客統一表結構為:
users表 四個字段id username password status,四個字段代表四列,其中id為自增列,status默認值為0,可選值0,1
id自增, username分別為zs,ls,wu password分別為:123456 abcdef 123abc status為0,1,1

#查詢整張表的所有數據
select * from users

#查詢指定列的所有數據
select username,password from users

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

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

#根據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表中的數據,按照status字段進行升序排序
SELECT * FROM users ORDER BY status;(升序排序在status后加上ASC效果等同)
select * from users order by status asc

#根據id降序排序,降序排序使用desc關鍵字
select * from users order by id desc

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

#查詢id為1的數據返回的總條數
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項目中的增刪改查

首先先執行命令初始化package.json包

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

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

npm install mysql   或者  npm i mysql

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

配置MySQL模塊

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

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

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

調用db.query()函數,指定要執行的SQL語句,通過回調函數拿到執行的結果

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

測試成功的返回結果為:[ RowDataPacket { &lsquo;1&rsquo;: 1 } ]

查詢表的SQL代碼(表名和結構看第一行)

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

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

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

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

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

刪除數據的SQL語句

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

標記刪除的情況

//標記刪除
//使用DELETE語句,會把真正的把數據從表中刪除掉。為了保險起見,推薦使用標記刪除的形式,來模擬刪除的動作。
//所謂的標記刪除,就是在表中設置類似于status這樣的狀態字段,來標記當前這條數據是否被刪除。
//當用戶執行了刪除的動作時,我們并沒有執行DELETE語句把數據刪除掉,而是執行了UPDATE語句,將這條數據對應的status字段標記為刪除即可。
//標記刪除:使用 UPDATE語句替代 DELETE語句;只更新數據的狀態,并沒有真正刪除
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("標記刪除成功");
    }
})

注:文章所述的?占位符標記方法具有更好的兼容行,筆者曾經做過測試,使用原生SQL語句拼接字段后直接使用db.query語句執行,結果在處理富文本數據的時候報出了錯誤,需要進行字符轉義處理。而使用?占位符則不會有這種情況出現。 

“node.js對于數據庫MySQL基本操作方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渝中区| 洪洞县| 邵武市| 筠连县| 苍梧县| 汤原县| 仪陇县| 东港市| 四川省| 特克斯县| 镇沅| 临沭县| 北川| 东宁县| 玉环县| 临清市| 翁源县| 资源县| 石渠县| 靖远县| 班玛县| 德昌县| 中江县| 安仁县| 江川县| 平阳县| 涿鹿县| 特克斯县| 息烽县| 宁阳县| 无极县| 奎屯市| 英德市| 静乐县| 九龙坡区| 无为县| 永昌县| 广饶县| 高台县| 隆尧县| 遂溪县|