Node与数据库(MySQL)
什么骚年?语句忘了怎么写?不如看看https://blog.csdn.net/SOUIC/article/details/123937762
安装包
npm i mysql
操作
查
const mysql = require('mysql');
const db = mysql.createPool({
// 配置一手
host: '127.0.0.1',
user: 'root',
password: '123456',
database: 'test'
})
// 端口默认为3306
// 查
db.query('select * from user', (err, res) => {
if (err) return console.log(err.message);
console.log(res);
})
// 如果出现以下错误可以试试后面那句话
// ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
//ALTER user'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你数据库的密码'
插入
let user = {
username: '沸羊羊',
age: 19,
address: '羊村'
};
// ?是占位符 写过jdbc应该都很熟吧
// 插入
db.query('insert into user (name, age, address) values (?, ?, ?)',
[user.username, user.age, user.address],
(err, res) => {
if (err) return console.log(err.message);
// affectedRows代表的是影响行数 影响行数为1的时候就代表插入成功
if (res.affectedRows === 1) {
console.log('插入成功');
}
});
+----+-----------+-----+--------------+
| id | name | age | address |
+----+-----------+-----+--------------+
| 1 | 杰尼龟 | 20 | 北京 |
| 2 | 王武 | 40 | 深圳 |
| 3 | 张三 | 23 | 北京 |
| 4 | 李四 | 25 | 杭州 |
| 5 | 盖伦 | 101 | 艾欧尼亚 |
| 8 | 沸羊羊 | 19 | 新都 |
+----+-----------+-----+--------------+
//-----------------------------------------------------------------------------
let user1 = {
name: '喜羊羊', // 这里是name而非username目的是为了匹配表中字段
age: 3,
address: '羊村'
};
// 如果说对象的属性名和表中字段一样就可以像下面这样写 (一定要一样!!!)
db.query('insert into user set ?',
user1, // 这里是重点
(err, res) => {
if (err) return console.log(err.message);
if (res.affectedRows === 1) {
console.log('插入成功');
}
});
+----+-----------+-----+--------------+
| id | name | age | address |
+----+-----------+-----+--------------+
| 1 | 杰尼龟 | 20 | 北京 |
| 2 | 王武 | 40 | 深圳 |
| 3 | 张三 | 23 | 北京 |
| 4 | 李四 | 25 | 杭州 |
| 5 | 盖伦 | 101 | 艾欧尼亚 |
| 8 | 沸羊羊 | 19 | 羊村 |
| 9 | 喜羊羊 | 3 | 羊村 |
+----+-----------+-----+--------------+
更新
let user = {
id: 8,
name: '美羊羊',
age: 3,
address: '羊村'
};
// 更新
db.query('update user set name = ?, age = ?, address = ? where id = ?',
[user.name, user.age, user.address, user.id],
(err, res) => {
if (err) return console.log(err.message);
if (res.affectedRows === 1) console.log('插入成功');
});
+----+-----------+-----+--------------+
| id | name | age | address |
+----+-----------+-----+--------------+
| 1 | 杰尼龟 | 20 | 北京 |
| 2 | 王武 | 40 | 深圳 |
| 3 | 张三 | 23 | 北京 |
| 4 | 李四 | 25 | 杭州 |
| 5 | 盖伦 | 101 | 艾欧尼亚 |
| 8 | 美羊羊 | 3 | 羊村 |
| 9 | 喜羊羊 | 3 | 羊村 |
+----+-----------+-----+--------------+
//-----------------------------------------------------------------------------
// 当然这也可以简写成以下形式
let user = {
id: 8,
name: '懒羊羊',
age: 3,
address: '羊村'
};
db.query('update user set ? where id = ?',
[user, user.id],
(err, res) => {
if (err) return console.log(err.message);
if (res.affectedRows === 1) console.log('插入成功');
});
+----+-----------+-----+--------------+
| id | name | age | address |
+----+-----------+-----+--------------+
| 1 | 杰尼龟 | 20 | 北京 |
| 2 | 王武 | 40 | 深圳 |
| 3 | 张三 | 23 | 北京 |
| 4 | 李四 | 25 | 杭州 |
| 5 | 盖伦 | 101 | 艾欧尼亚 |
| 8 | 懒羊羊 | 3 | 羊村 |
| 9 | 喜羊羊 | 3 | 羊村 |
+----+-----------+-----+--------------+
删除
db.query('delete from user where id = ?', 8, (err, res) => {
if (err) return console.log(err.message);
if (res.affectedRows === 1) console.log('删除成功');
})
PS:delete会把数据真正的删除,比较危险,删了就没了,所以一般都是加个状态字段来判断是否删除,而不是使用delete(你应该懂我的意思吧)