3.sql语句-增删改查
3.1 删除数据:
delete from 表名 where 删除条件 举例: -- 删除id为14的同学 delete from stu where id=14 -- 删除的时候,不加条件,将删除stu表中的全部记录 delete from stu
3.2 修改数据
update 表名 set 字段1=值1, 字段2=值2,... where 修改条件 举例 -- 修改id为1的同学的年龄为53 update stu set age=53 where id = 1 -- 修改id为1的同学的年龄为35,身高为160 update stu set age=35,height=160 where id = 1 -- 如果修改的时候,不加条件,则会修改全部的数据 update stu set weight = 60
3.3 数据查询
SELECT 字段名1, 字段名2, ..... FROM 表名 WHERE <条件表达式> 举例 # 查询部分字段 SELECT id,name,age FROM stu # 查询所有字段 SELECT * FROM stu # 带条件的查询 SELECT * FROM 表名 WHERE 条件1 and 条件2
3.4 举例:
-- 查询所有的学生 select * from stu -- 查询所有学生的id,name,height select id,name,height from stu -- 带条件的查询 select * from stu where 条件 -- 查询所有的男同学 select * from stu where sex='男' -- 查询id为2的男同学 select * from stu where id=2 -- 查询年龄大于50的同学 select * from stu where age > 50 -- 查询年龄大于50岁的男同学 select * from stu where age>50 and sex='男' -- 查询年龄在30~60之间的同学,包括30和60 select * from stu where age>=30 and age<=60 select * from stu where age between 30 and 60
4.后端搭建
4.1 搭建后端项目
1.初始化 npm init -y
2.下载开发依赖包
# express 用于创建服务器 # mysql 用于操作mysql数据库 # cors 用于实现 ajax 跨源资源共享 # multer 用于实现 文件上传 npm install express mysql cors multer
3.在项目根目录下,创建app.js文件,内容如下:
const express = require('express') const server = express() server.get('/test', (req, res) => { res.send({ code: 200, msg: 'ok' }) }) server.listen(3001, () => console.log('服务器启动成功提示'))
4.测试使用 nodemon app.js 至此后端项目搭建完毕-可以通过浏览器访问接口
http://localhost:3001/test
4.2 后端对数据库进行操作(增删改查)
- 启动phpstudy中的mysql服务
- navicat连接数据库服务器
- 创建数据库(herodb),数据表
用sql语句来创建表
-- 创建hero表,记录英雄信息 create table heros( id int not null primary key auto_increment, name varchar(255) not null, gender varchar(255), img varchar(255), isdelete tinyint default 0 ) character set utf8;
-- 创建user表,用来记录用户注册信息 create table user ( id int not null primary key auto_increment, username varchar(255) not null, password varchar(255) not null ) character set utf8;
4.3 测试数据库连接
引入前面封装的数据库操作模块,对上面创建的数据库进行连接测试
新建util/sql.js
module.exports = { query: function (sql, callback) { const mysql = require('mysql'); const conn = mysql.createConnection({ host : 'localhost', // 你要连接的数据库服务器的地址 user : 'root', // 连接数据库服务器需要的用户名 password : 'root', // 连接数据库服务器需要的密码 database : 'herodb' //你要连接的数据库的名字 }); conn.connect(); // 完成增删改查 conn.query(sql, callback); // 手动关闭连接 conn.end(); } }
新建util/sqltest.js
const conn = require('./sql.js') conn.query('select * from heros', (err, result) => { console.log(result) })
测试
node sqltest.js
5. 完整的后端代码(包括操作数据库)
./router/front.js
// ./router/front.js const conn = require('../util/sql.js') const express = require('express'); const router = express.Router(); router.get('/getinfo', function(req, res) { conn.query('select * from user', (err, result) => { console.log(result) res.json({code: 200, msg: '请求成功', data: result}) }) }); router.get('/getadd', function(req, res) { conn.query('insert into user (name,pwd) values("hh","1996")', (err, result) => { console.log(result) res.json({code: 200, msg: '请求成功--添加成功!', data: result}) }) }); router.get('/getdel', function(req, res) { conn.query('delete from user where id=10086', (err, result) => { console.log(result) res.json({code: 200, msg: '请求成功--添加成功!', data: result}) }) }); router.get('/getdetail', function(req, res) { res.send('getdetail-我是好人啊'); }); module.exports = router;
入口文件app.js
// 0. 加载 Express const express = require('express') // 1. 调用 express() 得到一个 app // 类似于 http.createServer() const app = express() const frontRouter = require('./router/front'); const serverRouter = require('./router/admin'); // // 1. 加载mysql // var mysql = require('mysql'); var cors = require('cors') app.use(cors()) // 路由中间件 app.use('/front', frontRouter); app.use('/server', serverRouter); // 1. 使用中间件--多一个body app.use(express.urlencoded()); app.post("/add",function(req,res){ //2. 可以通过req.body来获取post传递的键值对 res.json(req.body) }) app.use(express.json()); // 会自动加入req.body属性,这个属性中就包含了post请求所传入的参数 // 用来处理JSON格式的数据 app.post('/postJSON',(req,res)=>{ // 后端收到post传参 console.log(req.body); res.send('/postJSON') }) // 2. 设置请求对应的处理函数 app.use(express.static('public')) function getClientIp(req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; } app.use((req,res,next) => { console.log('我来用记录访问日志') // 获取当前用户访问的页面地址: req.url // 获取当前用户的id的地址: ? // 当前时间 const dt = new Date() console.log(dt.toLocaleTimeString()) console.log(req.url) console.log('来自:', getClientIp(req)); // fs写入某个日志文件中 next(); }) // 2. 创建连接对象 // var connection = mysql.createConnection({ // host : 'localhost', // 你要连接的数据库服务器的地址 // port : 3306,// 端口号 // user : 'root', // 连接数据库服务器需要的用户名 // password : 'root', // 连接数据库服务器需要的密码 // database : 'wang' //你要连接的数据库的名字 // }); // 3. 连接到MySQL服务器 // connection.connect((err) => { // // 如果有错误对象,表示连接失败 // if (err) return console.log('数据库连接失败') // // 没有错误对象提示连接成功 // console.log('mysql数据库连接成功') // }); // 4. 执行SQL语句--添加 // let sql = 'insert into user (name,pwd) values("小王8","99999999")' // connection.query(sql, (err, result) => { // if (result.affectedRows > 0) { // console.log('添加成功,新数据的id为:' + result.insertId); // } else { // console.log('添加失败'); // } // }); // 4. 执行SQL语句--查询 // let sql = 'select id,name,pwd from user'; // connection.query(sql, (err, result, fields) => { // if (err) throw err; // throw err 相当于 return console.log(err); // console.log(result); // result就是查询结果 // }); // 3. 监听端口号,启动 Web 服务 app.listen(3000, () => console.log('app listening on port 3000!'))
6.前端项目代码、后端项目代码地址下载
我这次写的项目代码已经上传csdn,可以下载,免费。