數據庫的基本操作莫過於是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端口啓動');
})
用戶表:
產品表