配置mysql模塊
1乖订、打開根目錄扮饶,打開終端,初始化執(zhí)行npm init -y乍构;
2甜无、下載mysql: npm i mysql;
操作數(shù)據(jù)庫
1、導(dǎo)入mysql模塊;
2毫蚓、建立和MySQL數(shù)據(jù)庫的聯(lián)系
3、測試mysql模塊是否正常工作
4昔善、查詢 users 表中所有數(shù)據(jù)
5元潘、插入數(shù)據(jù)到 users 表中
6、修改用戶信息
7君仆、刪除用戶信息
// 1.導(dǎo)入mysql模塊
const mysql = require('mysql')
// 2.建立和MySQL數(shù)據(jù)庫的聯(lián)系
const db = mysql.createPool({
host: '127.0.0.1', //數(shù)據(jù)庫的ip地址
user: 'root', //登錄數(shù)據(jù)庫的賬號
password: 'hoshi1234', //登錄數(shù)據(jù)庫的密碼
datebase: 'my_dv_01' //指定要操作那個數(shù)據(jù)庫
})
// 3.測試mysql模塊是否正常工作
db.query('select 1',(err, results) => {
// mysql工作期間報錯了
if(err) return console.log(err.message);
// 能夠正常執(zhí)行SQL語句
console.log(results);
// 返回 [ RowDataPacket { '1': 1 } ]
})
// 4.查詢 users 表中所有數(shù)據(jù)
const sqlStr = 'select * from my_dv_01.users'
db.query(sqlStr ,(err, results) => {
// mysql工作期間報錯了
if(err) return console.log(err.message);
// 能夠正常執(zhí)行SQL語句
console.log(results);
// 返回 users表的字段
})
// 5.插入數(shù)據(jù)到 users 表中
// 要插入到表中的數(shù)據(jù)
const user = { usersname: 'benben', password:'886886' }
// 待執(zhí)行的 SQL語句 翩概,英文問號 ? 代表占位符(SQL語法)
const sqlStr2 = 'insert into users (usersname, password) VALUES (?,?)'
// 使用數(shù)組的形式,依次為 ? 占位符指定具體的位置
db.query(sqlStr2, [user.usersname , user.password],(err, results) => {
// mysql工作期間報錯了
if(err) return console.log(err.message);
// 如果執(zhí)行的是insert into這個插入語句返咱,則results是一個對象
// 可以通過results.affectedRows判斷是否成功
if(results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功');
// 打開MySQL的users表格也能看到新數(shù)據(jù)
// 當(dāng)前數(shù)據(jù)只有4條钥庇,本條數(shù)據(jù)id為什么是5?
// 因?yàn)橹坝羞^4的數(shù)據(jù)咖摹,但是被刪除了评姨,id具有唯一性,刪除了也不能被其他數(shù)據(jù)使用
}
})
// 插入數(shù)據(jù)的便捷方式
const user = { usersname: 'niuniu', password:'000000' }
// 定義待執(zhí)行的 SQL 語句
const sqlStr = 'insert into my_dv_01.users set ?'
// 執(zhí)行 SQL 語句
db.query(sqlStr, user,(err, results) => {
if(err) return console.log(err.message);
if(results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功');
}
})
// 如何更新用戶的信息(UPDATE 語句用于更新表中已存在的記錄)
// 要插入到表中的數(shù)據(jù)
const user = { id: 6, usersname: '犇犇', password:'000111' }
// 定義SQL語句
const sqlStr = 'update my_dv_01.users set usersname=?, password=? where id=?'
// 執(zhí)行SQL語句
db.query(sqlStr,[user.usersname, user.password, user.id], (err, results) => {
if(err) return console.log(err.message);
if(results.affectedRows === 1) {
console.log('插入數(shù)據(jù)成功');
}
})
// 更新用戶信息的便捷方式(數(shù)據(jù)對象的每個屬性和字段一一對應(yīng)的情況下可使用)
const user = { id: 6, usersname: '夸夸牛', password:'000111' }
// 定義SQL語句
const sqlStr = 'update my_dv_01.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ù)
// 定義SQL語句
const sqlStr = 'delete from my_dv_01.users where id=?'
// 執(zhí)行SQL語句
// SQL語句中有多個占位符萤晴,則必須使用數(shù)組為每個占位符指定具體的值
// 如果只有一個占位符吐句,則可以省略數(shù)組
db.query(sqlStr,5,(err,results) => {
if(err) return console.log(err.message);
if(results.affectedRows === 1) {
console.log('刪除數(shù)據(jù)成功');
}
})
// 標(biāo)記刪除
// 使用delete語句會把數(shù)據(jù)真正刪除掉,非常危險店读,一般情況下推薦使用標(biāo)記刪除嗦枢,類似于修改status字段的狀態(tài),比如更新成1表示刪除屯断;
// 定義SQL語句
const sqlStr = 'update my_dv_01.users set status=? where id=?'
// 執(zhí)行SQL語句
db.query(sqlStr,[1, 3],(err, results) => {
if(err) return console.log(err.message);
if(results.affectedRows === 1) {
console.log('標(biāo)記刪除成功');
}
})