数据库的基本操作莫过于是crud ,(增删改查);本文记录日常操作,便于以后查阅
1.增(INSERT INTO 语句)
语法:
INSERT INTO 表名称 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列
INSERT INTO 表名称 (列1, 列2,...) VALUES (值1, 值2,....)
2.删 (DELETE 语句)
语法:
DELETE FROM 表名称 WHERE 列名称 = 值
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的
DELETE FROM 表名称
或则
DELETE * FROM 表名称
3.改 (UPDATE 语句)
语法:
UPDATE 表名称 SET 字段名 = 新值 WHERE 列名称 = 某值
4.查(SELECT语句)
语法:
SELECT 列名称 FROM 表名称
查询所有
SELECT * FROM 表名称
select查询是比较复杂的,经常可以配合 limit 值1,值2 做分页查询;还可以模糊查询 like 配合通配符 % ;排序 order by asc,降序 order by desc等等
多表查询语句,比如users表和product表,(1对多的关系);sql语句如下:
select * from users join product on users.id = product.uid where users.id = 2
5.koa代码操作数据库
const Koa = require('koa');
const Router = require('koa-router');
const koaBody = require('koa-body');
const mysql2 = require('mysql2');
const md5 = require('md5');
let app = new Koa();
// post提交允许上传文件
app.use(koaBody({
multipart: true
}))
// 配置数据库连接
const connection = mysql2.createConnection({
host: '127.0.0.1',
user: 'root',
password: 'root',
database: 'trello',
charset: 'utf8'
})
let router = new Router();
app.use(async (ctx, next) => { // 中间件统一配置
// 设置允许跨域
ctx.set('Access-Control-Allow-Origin', 'http://localhost:8080');
// 允许设置的头部
ctx.set('Access-Control-Allow-Headers', "content-type,Content-Length,Authorization,withCredentials");
await next();
})
/* router.options("*", ctx => {
ctx.body = "";
}) */
// 增加用户
router.post('/user', async ctx => {
let { email, username, pwd } = ctx.request.body;
pwd = md5(pwd);
/*
let resule = await new Promise(resolve => {
connection.query('insert into users (name, password, email) values (?, ?, ?)', [username, pwd, email], (err, results) => {
if(err) {
let resData = {
info: '添加失败',
status: 0
}
resolve(resData);
return console.log(err);
}
if(results.affectedRows > 0) {
let resData = {
info: '添加成功',
status: 1
}
resolve(resData);
}
})
});
*/
/* mysql2 封装好的异步同步化方法 */
let [rows, fields] = await connection.promise().query('insert into users (username, userpwd, useremail) values (?,?,?)', [username, pwd, email]);
let resData;
if (rows.affectedRows > 0) {
resData = {
info: '添加成功',
status: 0
}
} else {
resData = {
info: '添加失败',
status: 1
}
}
ctx.body = resData;
});
// 查询用户
router.get('/search', async ctx => {
let [rows,fields] = await connection.promise().query('select * from users join product on users.id = product.uid where users.id = 2');
ctx.body = rows;
})
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('服务器在3000端口启动');
})
用户表:
产品表