day5 在项目中操作 MySQL
1、在项目中操作步骤
- 安装操作 MySQL 数据库的第三方模块(mysql)
- 通过 mysql 模块连接到 MySQL 数据库
- 通过mysql模块执行SQL语句
2、安装与配置 mysql 模块
mysql 模块是托管于 npm 上的第三方模块,它提供了在 Node 项目中连接和操作 MySQL 数据库的能力。
npm install mysql
const mysql = require('mysql');
const db = mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'admin123',
database:'my_db_01'
});
调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
db.query('select 1',(err,results) => {
if(err) return console.log(err.message);
console.log(results);
});
3、使用 mysql 模块操作 MySQL 数据库
-
查询数据 查询 users 表中所有的数据
const sqlStr = 'select * from users';
db.query(sqlStr,(err,results) => {
if(err) return console.log(err.message);
console.log(results);
});
-
新增数据(插入) 向 users 表中新增数据,其中 username 为Spider-Man,password为PCC321
const user = {userName:'新增',password:'xz321'};
const sqlStr = 'insert into users (userName,password) value (?,?)';
db.query(sqlStr,[user.userName,user.password],() => {
if(err) return console.log(err.message);
if(results.affectedRows == 1) {
console.log('新增用户信息成功');
}
});
使用 (?,?)进行占位,执行sql语句时填充真正的值 -
新增数据的便捷方式
const user = {userName:'新增2',password:'xz123'};
const sqlStr = 'insert into users set ?';
db.query(sqlStr,user,(err,results) => {
if(err) return console.log(err.message);
if(results.affectedRows == 1){
console.log('快捷新增数据成功!');
}
});
-
更新数据
const user = {id:8,userName:'新增285',password:'xz55123'};
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);
if(results.affectedRows == 1){
console.log('更新数据成功!');
}
});
-
更新数据的便捷方式
const user = {id:6,userName:'6666',password:'56565'};
const sqlStr = 'update users set ? where id=?';
db.query(sqlStr,[user,user.id],(err,results) => {
if(err) return console.log(err.message);
if(results.affectedRows == 1){
console.log('更新数据成功!');
}
});
-
删除数据 在删除数据时,推荐根据id这样的唯一标识来删除对应的数据
const sqlStr = 'delete from users where id=?'
db.query(sqlStr,6,(err,results)=>{
if(err) return console.log(err.message);
if(results.affectedRows == 1){
console.log('删除数据成功!');
}
});
-
标记删除 使用 delete 语句,会把真正的数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。 所谓的标记删除,就是表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除 当用户执行了删除的动作时,我们并没有执行 delete 语句把数据删除掉,而是执行了 update语句,将这条数据对应的 status 字段标记为删除即可
const sqlStr = 'update users set status=? where id=?';
db.query(sqlStr,[1,8],(err,results)=>{
if(err) return console.log(err.message);
if(results.affectedRows == 1){
console.log('标记删除数据成功!');
}
});
|