建表
MySQL程序可以使用PHP study集成工具。链接、操作数据库可以使用phpstudy自带的工具也可以使用navicat工具。
SQL语句-增删改查
-
插入数据
insert into 表名(字段名1,字段名2) values(值1,值2);
例如:
insert into user(name,description) values('陈浩南','铜锣湾扛把子');
-
删除数据
delete from 表名 where 条件;
条件一定要写,如果不写则会删除该表中所有的数据删除。
例如:
delete from user where id>3;
-
修改数据
update 表名 set 字段名1=新值1,字段名2=新值2 where 条件;
条件一定要写,如果不写则会修改数据表中的全部数据
例如:
update user set name='子风兄',description='比波波还骚' where id=3;
-
查询数据
select * from 表名 [where 条件];
NodeJs操作数据库
NodeJs链接数据库需要使用模块mysql
。基本结构如下:
var mysql = require("mysql");
// 创建一个链接数据库的链接
var connection = mysql.createConnection({
// 数据库地址
host: "localhost",
// 数据库账号
user: "root",
// 数据库密码
password: "root",
// 数据库名(非表名)
database: "study",
});
// 打开链接
connection.connect();
// 具体语句
// .....
connection.end();
连接与关闭链接可以不写。
查
connection.query("select * from user", (error, result, fields) => {
// 如果查询遇到错误,则error代表错误。没有错误则为null
console.log(error);
// 执行sql语句得到的结果。如果查询遇到错误,则为undefined
console.log(result);
// 字段信息
console.log(fields);
});
result
fields
增
let name = "伦哥";
let description = "这是个描述";
connection.query(
`insert into user(name,description) values('${name}','${description}')`,
(error, result, fields) => {
// 如果查询遇到错误,则error代表错误。没有错误则为null
console.log(error);
// 执行sql语句得到的结果。如果查询遇到错误,则为undefined
console.log(result);
// 字段信息
console.log(fields);
}
);
其中result
会返回一个对象,fields
返回undefined
。其中affectedRows
表示受影响的行数,如果大于0则表示新增成功。
删
let id = 3;
connection.query(`delete from user where id=${id}`, (error, result, fields) => {
if (error == null) {
console.log(result);
}
});
改
改与新增类似。
let name = "伦哥";
let description = "这是个描述";
let id = 3;
connection.query(
`update user set name='${name}',description='${description}' where id=${id}`,
(error, result, fields) => {
if (error == null) {
console.log(result);
}
}
);
英雄管理系统-添加接口
app.post("/hero/add", upload.single("heroIcon"), (req, res) => {
// 1.1 接收前端传递过来的参数
console.log(req.file);
console.log(req.body);
let heroIcon = req.file.filename;
let { heroName, heroSkill } = req.body;
// 执行sql语句代码
connection.query(
`insert into hero(heroName,heroSkill,heroIcon) values('${heroName}','${heroSkill}','${heroIcon}');`,
(error, result, fields) => {
if (error == null) {
res.send({
code: 200,
msg: "新增成功",
list: { heroName: heroName, heroSkill: heroSkill },
});
} else {
res.send({
code: 400,
msg: "新增失败",
list: { heroName: heroName, heroSkill: heroSkill },
});
}
}
);
});
英雄管理系统-获取接口
app.get("/hero/all", (req, res) => {
connection.query(
`select id,heroName,heroSkill,heroIcon from hero where isDelete = 0`,
(error, result, fields) => {
if (error == null) {
console.log(result);
res.send({
code: 200,
msg: "查询成功",
list: result,
});
} else {
res.send({
code: 400,
msg: "查询失败",
list: null,
});
}
}
);
});
完整代码
const express = require("express");
const multer = require("multer");
const mysql = require("mysql");
var connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "study",
});
const app = express();
var upload = multer({ dest: "uploads/" });
app.use(express.static("uploads"));
// 路由
// 参数:heroName heroSkill,heroIcon(文件),
app.post("/hero/add", upload.single("heroIcon"), (req, res) => {
// 1.1 接收前端传递过来的参数
console.log(req.file);
console.log(req.body);
let heroIcon = req.file.filename;
let { heroName, heroSkill } = req.body;
// 执行sql语句代码
connection.query(
`insert into hero(heroName,heroSkill,heroIcon) values('${heroName}','${heroSkill}','${heroIcon}');`,
(error, result, fields) => {
if (error == null) {
res.send({
code: 200,
msg: "新增成功",
list: { heroName: heroName, heroSkill: heroSkill },
});
} else {
res.send({
code: 400,
msg: "新增失败",
list: { heroName: heroName, heroSkill: heroSkill },
});
}
}
);
});
app.get("/hero/all", (req, res) => {
connection.query(
`select id,heroName,heroSkill,heroIcon from hero where isDelete = 0`,
(error, result, fields) => {
if (error == null) {
console.log(result);
res.send({
code: 200,
msg: "查询成功",
list: result,
});
} else {
res.send({
code: 400,
msg: "查询失败",
list: null,
});
}
}
);
});
// 开启服务器
app.listen(3000, () => {
console.log("开启成功");
});