Node与数据库(MySQL)

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(你应该懂我的意思吧)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值