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端口啓動');
})

用戶表:

產品表

 

 

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