在项目中操作数据库的步骤
①安装操作MySQL数据库的第三方模块(mysql)
②通过mysql模块连接到MySQL数据库
③通过mysql模块执行SQL 语句
安装与配置mysql模块
mysql 模块是托管于npm上的第三方模块。它提供了在Node.js项目中连接和操作MySQL数据库的能力。
想要在项目中使用它,需要先运行如下命令,将mysql安装为项目的依赖包:
npm install mysql
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
//检测mysql 模块能否正常工作
db.query('select 1',(results,err)=>{
if (err) return console.log(err.message)
console.log(results)
})
使用mysql模块操作MySQL数据库
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const sqlStr='select * from users'
db.query(sqlStr,(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('插入数据成功')
}
})
插入数据
向users表中新增数据,其中username为Spider-Man,password 为pcc321,示例代码如下:
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const user ={username:'admin',password:'admin'}
const sqlStr='insert into users (username,password)values(?,?)'
db.query(sqlStr,[user.username,user.password],(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('插入数据成功')
}
})
插入数据的便捷方式
向表中新增数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const user ={username:'admin',password:'admin'}
const sqlStr='insert into users SET ?'
db.query(sqlStr,user,(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('插入数据成功')
}
})
更新数据
可以通过如下方式,更新表中的数据:
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const user ={id:6,username:'admin',password:'admin'}
const sqlStr='update users set username=?,password=? where id=?'
db.query(sqlStr,[user.username,user.password,user.id],(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('更新数据成功')
}
})
更新数据的便携方式
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const user ={id:6,username:'admin',password:'admin'}
const sqlStr='update users set ? where id=?'
db.query(sqlStr,[user,user.id],(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('更新数据成功')
}
})
删除数据
在删除数据时,推荐根据id这样的唯一标识,来删除对应的数据。示例如下:
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const sqlStr='delete from users where id=?'
db.query(sqlStr,5,(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('删除数据成功')
}
})
使用DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。
所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。
当用户执行了删除的动作时,我们并没有执行DELETE 语句把数据删除掉,而是执行了UPDATE 语句,将这条数据对应的status字段标记为删除即可。
//1.导入mysql模块
const mysql =require('mysql')
//2.建立与MySQL数据库的连接关系
const db= mysql.createPool({
host:'127.0.0.1',//数据库的Ip地址
user: 'root',//登录数据库的账号
password:'root',//登录数据库的密码
database:'test'//指定要操作哪个数据库
})
const sqlStr='update fusers set status=? id=?'
db.query(sqlStr,[1,5],(err,results)=>{
//传输失败
if (err)return console.log(err.message)
//传输成功
//注意:如果执行的是 insert into插入语句,则results是一个对象
//可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows===1){
console.log('删除数据成功')
}
})