Node.js中操作mysql數(shù)據(jù)庫(kù)
? mysql模塊
是托管于npm的第三方模塊,它提供了Node.js項(xiàng)目中連接
和操作mysql數(shù)據(jù)庫(kù)
的能力。
在項(xiàng)目中操作數(shù)據(jù)庫(kù)的步驟
(1).安裝mysql數(shù)據(jù)庫(kù)的第三方模塊(mysql)
npm install mysql
(2).通過mysql模塊連接到mysql數(shù)據(jù)庫(kù)
mysql.createPool()
(3).通過mysql模塊執(zhí)行sql語(yǔ)句
db.query()
1.操作mysql數(shù)據(jù)庫(kù)
// 1.導(dǎo)入mysql模塊
const mysql = require('mysql')
// 2.創(chuàng)建與mysql數(shù)據(jù)庫(kù)的連接
const db = mysql.createPool({
host: '127.0.0.1', // 數(shù)據(jù)庫(kù)的ip地址
user: 'root', // 登錄數(shù)據(jù)庫(kù)的賬號(hào)
password: 'pancc', // 登錄數(shù)據(jù)庫(kù)的密碼
database: 'my_db_01' // 指定要操作的數(shù)據(jù)庫(kù)
})
// 測(cè)試mysql模塊能否正常運(yùn)行
// 3.執(zhí)行sql語(yǔ)句
db.query('SELECT 1', (err, results) => {
if (err) return console.log(err.message)
console.log(results) // [ RowDataPacket { '1': 1 } ] 說明數(shù)據(jù)庫(kù)連接正常
})
-
db.query()
用來執(zhí)行sql
語(yǔ)句 - sql執(zhí)行成功,
err
默認(rèn)為null
,results
為返回的數(shù)據(jù)
2.查詢數(shù)據(jù)
select 字段1,字段2 from 表名
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// 查詢user表的所有數(shù)據(jù)
const sqlStr = 'select * from users'
db.query(sqlStr, (err, results) => {
// 查詢失敗
if (err) return console.log(err.message)
// 查詢成功
console.log(results)
})
- 注意: 如果執(zhí)行的是select查詢語(yǔ)句,則results是
數(shù)組
3.插入數(shù)據(jù)
insert into 表名 (字段1,字段2) values(值1,值2)
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// 待新增的數(shù)據(jù)
const user = { username: '馬超', password: '000000' }
// 待執(zhí)行的sql語(yǔ)句
const sqlStr = 'insert into users (username,password) values(?,?)'
// 執(zhí)行sql語(yǔ)句
db.query(sqlStr, [user.username, user.password], (err, results) => { //
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功!')
}
})
- sql中英文
?
為占位符
,使用數(shù)組
的形式,依次為?占位符指定
具體的值 - 注意: 如果執(zhí)行的是insert插入語(yǔ)句,則results是一個(gè)
對(duì)象
- 可以通過results的
affectedRows屬性
來判斷是否插入數(shù)據(jù)成功
插入數(shù)據(jù)的簡(jiǎn)便方式
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// 待新增的數(shù)據(jù)
const user = { username: '馬超', password: '000000' }
// 待執(zhí)行的sql語(yǔ)句
const sqlStr = 'insert into users set ?'
// 執(zhí)行sql語(yǔ)句
db.query(sqlStr, [user.username, user.password], (err, results) => { //
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功!')
}
})
- 向表中新增數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的
每個(gè)屬性
和數(shù)據(jù)表字段
一一對(duì)應(yīng),就可以以便捷的方式插入數(shù)據(jù)
4.更新數(shù)據(jù)
update 表名 set 字段1=值1,字段2= 值2
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// 更新的數(shù)據(jù)對(duì)象
const user = { id: 4, username: '張遼', password: '888888' }
// sql語(yǔ)句
const sqlStr = 'update users set username=?,password=? where id=?'
// 執(zhí)行sql語(yǔ)句
db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('更新數(shù)據(jù)成功!')
}
})
- 注意: 如果執(zhí)行的是update更新語(yǔ)句,則results是一個(gè)
對(duì)象
更新數(shù)據(jù)的簡(jiǎn)便方式
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// 更新的數(shù)據(jù)對(duì)象
const user = { id: 4, username: '陸遜', password: '777777' }
// sql語(yǔ)句
const sqlStr = 'update users set ? where id=?'
// 執(zhí)行sql
db.query(sqlStr, [user, user.id], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('更新數(shù)據(jù)成功!')
}
})
- 向表中更新數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表字段一一對(duì)應(yīng),就可以以便捷的方式插入數(shù)據(jù)
5.刪除數(shù)據(jù)
delete from 表名
文章來源:http://www.zghlxwxcb.cn/news/detail-447672.html
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// sql語(yǔ)句
const sqlStr = 'delete from users where id=?'
// 執(zhí)行sql
db.query(sqlStr, 17, (err, results) => {
if (err) return console.log(err.message)
// 注意: 執(zhí)行delete語(yǔ)句的時(shí)候,結(jié)果results也是一個(gè)對(duì)象
if (results.affectedRows === 1) {
console.log('刪除數(shù)據(jù)成功!')
}
})
- 在刪除數(shù)據(jù)時(shí),推薦根據(jù)
id
這樣的唯一標(biāo)識(shí)
,來刪除對(duì)應(yīng)的數(shù)據(jù) - 如果sql語(yǔ)句中只有一個(gè)占位符,為?占位符指定具體的值,可以省略數(shù)組形式
- 注意: 執(zhí)行delete語(yǔ)句的時(shí)候,結(jié)果results也是一個(gè)
對(duì)象
6.標(biāo)記刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-447672.html
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'pancc',
database: 'my_db_01'
})
// 標(biāo)記刪除: 使用update語(yǔ)句替代delete語(yǔ)句;只更新數(shù)據(jù)的狀態(tài),并沒有真正刪除
const sqlStr = 'update users set status=? where id=?'
db.query(sqlStr, [1, 4], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('標(biāo)記刪除成功!')
}
})
- 使用delete語(yǔ)句,會(huì)把真正的數(shù)據(jù)進(jìn)行刪除。為了保險(xiǎn)起見,推薦使用
標(biāo)記刪除
,來模擬刪除動(dòng)作
。 - 設(shè)置類似status這樣的狀態(tài)字段,來標(biāo)記當(dāng)前這條數(shù)據(jù)是否被刪除
到了這里,關(guān)于“Node.js:操作mysql數(shù)據(jù)庫(kù)“的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!