mysql
- 安装操作MySQL数据库的第三方模块(mysql)
- 通过第三方模块(mysql2)连接到MySQL数据库
- mysql插入数据
- mysql插入数据的便捷方式
- mysql更新数据
- mysql更新数据的便捷方式
- mysql删除数据
安装操作MySQL数据库的第三方模块(mysql)
- npm init -y,对项目进行初始化操作,对包进行管理
- npm install mysql 安装第三方模块
- 安装完,必须进行配置!
// 1.导入mysql模块
// const mysql = require('mysql')
// mysql模块不兼容,检测时会报错
// 报错Client does not support authentication protocol requested by server; consider upgrading MySQL client,
// 所以安装mysql2,使用npm i mysql2安装,再导入 mysql2
通过第三方模块(mysql2)连接到MySQL数据库
// 1.导入mysql2模块
const mysql = require('mysql2')
// 2,建立与MySQL数据库的连接
const db = mysql.createPool({
host: "127.0.0.1", //数据库的IP地址
user: "root", //登录数据库的账号
password: "lusheng123", //登录数据库的密码
database: "my_db_01", //指定要操作哪个数据库
})
//3.检测mysql模块是否正常工作 SELECT 1 无作用,只是测试
db.query('SELECT 1',(err, results) => {
//err为报错信息
if (err) return console.log(err)
//res是成功的消息
console.log(results)
})
- 打印出这个就证明成功
mysql插入数据
- 如果执行的select查询语句,则执行的结果是数组
- insert into,执行的结果是对象
- results.affectedRows代表操作的行数,等于1代表插入成功
// 插入新增数据,其中username为西游记,password是000000
// 定义要插入的对象数据
const user = {
username: "西游记",
password: "000000"
}
// 定义待执行的SQL语句,别写错了
const sqlstr= 'insert into users (username,password) values (?,?)'
// 使用数组的形式,依次为?占位符指定值
db.query(sqlstr,[user.username,user.password], (err, results) => {
//err为报错信息
if (err) return console.log(err.message)
//res.affectedRows是影响的行数
if(results.affectedRows===1){console.log("插入数据成功")}
})
- 数据库查询,果然成功了
mysql插入数据的便捷方式
- 当新增数据时候,如果数据对象的每个属性和数据表的字段一一对应
- set ? ,代表这个对象身上有几个属性就插入几个属性
// 定义要插入的对象数据
const user1 = {
username: "西游记1",
password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1= 'insert into users set ?'
// 使用数组的形式,依次为?占位符指定值
db.query(sqlstr1,user1, (err, results) => {
//err为报错信息
if (err) return console.log(err.message)
//res.affectedRows是影响的行数
if(results.affectedRows===1){console.log("插入数据成功")}
})
mysql更新数据
const user1 = {
id: 7,
username: "红楼梦",
password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1 = 'update users set username=?,password=? where id = ?'
db.query(sqlstr1, [user1.username, user1.password, user1.id], (err, results) => {
//err为报错信息
if (err) return console.log(err.message)
//res.affectedRows是影响的行数
if (results.affectedRows === 1) {
console.log("更新数据成功")
}
})
mysql更新数据的便捷方式
const user1 = {
id: 7,
username: "红楼梦1",
password: "0000001"
}
// 定义待执行的SQL语句
const sqlstr1 = 'update users set ? where id = ?'
db.query(sqlstr1, [user1, user1.id], (err, results) => {
//err为报错信息
if (err) return console.log(err.message)
//res.affectedRows是影响的行数
if (results.affectedRows === 1) {
console.log("更新数据成功")
}
})
mysql删除数据
-
删除数据的时候,推荐根据id这样的唯一标识,来删除对应的数据
-
执行delete 语句后,结果也是一个对象
-
如果有多个占位符,则必须使用数组为每个占位符指定具体的值
-
如果只有一个,数组可省略
// 定义待执行的SQL语句
const sqlstr = 'delete from users where id=?'
db.query(sqlstr,6, (err, results) => {
//err为报错信息
if (err) return console.log(err.message)
//res.affectedRows是影响的行数
if (results.affectedRows === 1) {
console.log("删除成功")
}
})
- 标记删除
- 当然,为了保险起见,推荐使用标记删除的形式,来模拟删除的动作,就是设置状态字段,来标记当前数据是否被删除
- 字段参数status为1代表已删除,为0代表未删除
// 定义待执行的SQL语句
const sqlstr = 'update users set status=? where id=?'
db.query(sqlstr,[1,7], (err, results) => {
//err为报错信息
if (err) return console.log(err.message)
//res.affectedRows是影响的行数
if (results.affectedRows === 1) {
console.log("标记删除数据成功")
}
})