需要SQL基础,否则效果不好!!对sql不熟悉的小伙伴先看: 关系型数据库从零开始学(第二节)关系型数据库查询常用的SQL命令 - 简书 (jianshu.com)
----------------------------------------------------------------------------------正文------------------------------------------------------------------------------------------------------
在nodejs项目中操作mysql数据库的步骤
①安装第三方模块 mysql
②连接到mysql数据库
③通过mysql模块执行SQL语句
1 安装npm i mysql
2 配置 mysql模块 const mysql = require('mysql')
const db = mysql.createPool({
host:'127.0.0.1', //数据库ip
user:'root', //账号
password:'admin123', //密码
database:'my_db_01' //指定要操作哪个数据库
})
3 测试连接
db.query('select 1',(err,results=>{
if(err) return console.log(err)
console.log(results)
})
4 查询users表中所有数据
const sqlStr = 'select * from users'
db.query(sqlStr,(err,results) => {
if(err) return console.log(err,message)
console.log(results)
}) //如果正确 ,结果就是一个数组,数组中是对象
5 插入数据
//要插入到users表中的数据对象
const user = {username:'Spider-Man',password:'pcc321'}
//要执行的sql语句, 其中英文的 ?表示占位符
const sqlStr = 'insert into users(username,password) values (?,?)' //重点!
db.query(sqlStr, [user.username,user.password], (err,results) => {
//如果执行失败
if(err) return console.log(err.message)
//如果执行成功 results 是一个对象
if(results.affectedRows === 1) {console.log('插入数据成功')}
})
5.1 插入数据的快捷方式
如果数据对象的每一个属性名和数据表字段 一 一对应,可以用下面简便方式
const user = {username:'spider-man2',password'cc4321'}
const sqlStr = 'insert into users set ?' // users是表名
db.query(sqlStr,user,(err,results) => {
if(err) return console.log(err.message)
if(results.affectedRows ===1){
console.log('插入数据成功‘)
}
}
6更新数据
const user = {id:6,username:'aaa',password:'000'}
const sqlStr= 'updata users set username=?,password=? where id=? //定义sql语句
db.query(sqlStr,[user.username,user.password,user.id],(err,results) =>{ if(err) return console.log(err.message)
if(results.affectedRows===1){
console.log('更新数据成功')}
})
7 删除数据
一定要谨慎,where 一定要有!!! 一定要有限定条件!!别删库跑路了。。。。
const sqlStr = 'delete from users where id=?'
db.query(sqlStr ,7,(err,results) = >{
if(err) return console.log(err.message)
if(results.affectedRows===1){
console.log('更新数据成功')}
})
7.1 标记删除
标记删除是删除的模拟动作,未真正删除数据库,这样比较安全
在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除