安装
npm i mysql
引入并建立连接
const mysql = require('mysql')
// 建立连接
const db = mysql.createPool({
host: '127.0.0.1', //数据库的ip地址
user: 'root', //登录数据库的账号
password: 'admin2577', //登录数据库的密码
database: 'my_db_01' //指定操作哪个数据库还有这个地方 》》》database不是datebase
})
注意事项
- 首先本机要安装mysql,以上面代码为例,要有一个my_db_01的库
- 上述属性database写法为d a t a b a s e而不是 d a t e b a s e注意a和e不然会报错ER_NO_DB_ERROR: No database selected,即便是写错了但是测试语句 select 1仍然正常运行所以很难发现
测试是否正常工作,测试语句 select 1
db.query('select 1', (erro, dbdata) => {
if (erro) return console.log(erro.message)
console.log(dbdata)
})
以下是在数据库中有一个users表的基础上实现的
表列为
Columns:
id int AI PK
username varchar(45)
password varchar(45)
status tinyint(1)
查询列表
const sqlstr = 'select * from users'
db.query(sqlstr, (erro, result) => {
if (erro) return console.log(erro.message)
// 如果执行的是查询语句则返回的是数组
console.log(result)
})
(以下代码?为占位符,query第二个参数为一个数组按顺序传入到占位符,当只有一个占位符可以不使用数组)
(简写形式为对象值与数据库字段对应时才可用的一种方式)
插入数据
const user = { username: 'nae', password: '124422' }
// ?为占位符
const insetSql = 'insert into users (username,password) values (?,?)'
db.query(insetSql, [user.username, user.password], (erro, result) => {
if (erro) return console.log(erro.message)
// 插入语句result是一个对象
// 通过affectedRows判断是否插入成功
if (result.affectedRows === 1) return console.log('插入成功')
})
插入数据简写
const user2 = { username: '', password: '124422' }
const insetSqlJX = 'insert into users set ?'
db.query(insetSqlJX, user2, (erro, result) => {
if (erro) return console.log(erro.message)
// 插入语句result是一个对象
// 通过affectedRows判断是否插入成功
if (result.affectedRows === 1) return console.log('插入成功')
})
更新数据
const userupdate = { id: 17, username: 'seer', password: '213cf' }
const updateSql = 'update users set username=?,password=? where id=?'
db.query(updateSql, [userupdate.username, userupdate.password, userupdate.id], (erro, result) => {
if (erro) return console.log(erro.message)
// 更新语句result是一个对象
// 通过affectedRows判断是否修改成功
if (result.affectedRows === 1) return console.log('修改成功')
})
更新数据简写
const userupdate = { id: 17, username: 'seddrer', password: '213cf' }
const updateSql = 'update users set ? where id=?'
db.query(updateSql, [userupdate, userupdate.id], (erro, result) => {
if (erro) return console.log(erro.message)
// 更新语句result是一个对象
// 通过affectedRows判断是否修改成功
if (result.affectedRows === 1) return console.log('修改成功')
})
删除数据
const deleteSql = 'delete from users where id=?'
// 当有多个站位符的时候第二个参数必须指定一个数组,当只有一个站位符的时候可以直接写
db.query(deleteSql, 12, (erro, result) => {
if (erro) return console.log(erro.message)
// 删除语句result是一个对象
// 通过affectedRows判断是否删除成功
if (result.affectedRows === 1) return console.log('删除成功')
})
标记删除
删除数据往往会做一个标记删除,以防为了恢复数据通过给数据库某一个字段赋值状态实现
const deleteSqlUP = 'update users set status=1 where id=?'
db.query(deleteSqlUP, 10, (erro, result) => {
if (erro) return console.log(erro.message)
// 删除语句result是一个对象
// 通过affectedRows判断是否删除成功
if (result.affectedRows === 1) return console.log('标记删除成功')
})