Koa增删改查(curd)

数据库的基本操作莫过于是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端口启动');
})

用户表:

产品表

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章