NodeJS里如何连接MySQL并分别操作增删改查

本文简介

Node.js 里连接 MySQL ,并分别操作增删改查 。

你需要在电脑里安装一下 MySQL ,最好再安装一个数据库管理工具。我使用的是 MySQL Workbench ,这是一款 MySQL 官方推出的管理工具。你也可以使用 Navicat ,这工具也挺好用的。

  • MySQL
  • MySQL Workbench

初始化项目

在实操之前,首先要有一个库,库是用来存放数据的。

需要注意的是安装 MySQL 时需要记住自己的账号密码,因为连接数据库时需要用到。

mysql 建库建表

建库

我使用的是 MySQL Workbench 的图形化界面来建库,你可以使用其他工具,都差不多的。

单击这个图标,然后输入库的名字,再点击 Apply 就能建库

当然,你也可以使用 SQL 语句建库

CREATE SCHEMA `myblog` ;

复制代码

建表

创建一个用户表,表里有 id 、用户名(username)、密码(password)、昵称(nickname) 这几个字段。

展开 testdb ,右键 Tables ,选择 Create Table 进入创建表的界面

上面做了这几步操作:

  1. 设置表名。
  2. 添加字段。PK 是主键,NN 是不能为空,AI 是自增。
  3. 点击 Apply 创建表。

如果你不怕麻烦,也可以使用 SQL 语句建表

CREATE TABLE `testdb`.`users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(20) NOT NULL,
  `password` VARCHAR(20) NOT NULL,
  `nickname` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`id`));

复制代码

经过一番操作,表就创建好了。但此时表里没任何数据,接下来会用 Node.js 操作。

初始化 Node 项目

创建一个项目目录,我将其命名为 node-mysql-demo,然后初始化该项目

npm init -y

复制代码

此时项目里会多一个 package.json 文件,证明初始化成功了。

安装 MySQL 依赖包

npm install mysql

复制代码

使用上面这条命令安装 MySQL 依赖包。

安装完成后,项目里会多一个 node_modules 文件夹,并且 package.json 里会出现 mysql 以及所安装的版本号。

完成这两步就算是初始化完毕了。

连接 MySQL

在根目录创建 index.js 文件,然后输入以下代码:

const mysql = require('mysql') // 引入 mysql


// 配置连接项
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  port: '3306',
  database: 'testdb'
})


// 执行连接操作
connection.connect()

复制代码

上面的代码其实主要就 3 步:

  1. 引入 mysql
  2. 配置
  3. 连接,使用 connect() 方法

其中配置项分别是:

  • host:域。本地测试的话可以使用 localhost
  • user:用户。测试一般使用 root
  • password:密码。安装数据库时会配置的
  • port:端口。默认是 3306
  • database:数据库。输入要连接的数据库的名称即可

操作 MySQL

配置并启动连接 MySQL 后,就可以对数据库进行增删改查了。

增 insert

首先先新增几条数据

// 新增数据
const sql = `insert into users (username, password, nickname) values ('leihou', '123456', '雷猴');`


connection.query(sql, (err, result) => {
  if (err) {
    console.error(err)
    return
  }
  console.log(result)
})

复制代码

创建一条 SQL 语句,使用 insert into users 向 users 表添加数据。这条语句其实很简单,翻译一下每个单词就能懂这条语句的内容。

最后使用 query() 方法执行操作。第一个参数是 SQL 语句;第二个参数是回调函数。

数据创建成功后,控制台会打印以下内容:

OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 1,
  serverStatus: 2,
  message: '',
  protocol41: true,
  changedRows: 0
}

复制代码

insertId 是插入的 ID;affectedRows 是受影响的行数。通常新增成功后,我们可以把 insertId 返回给前端。

查 select

我使用上面的 SQL 语句添加了 3 条数据

因为新增操作比较简单,我就不重复演示了。

查询的操作其实是最繁多的,接下来会一个一个介绍。

查询所有数据

const sql = `select * from users;`


connection.query(sql, (err, result) => {
  if (err) {
    console.error(err)
    return
  }
  console.log(result)
})

复制代码

* 代表要查询所有字段。from users 表示要查询 users 表。

此时返回的结果如下所示

[
  RowDataPacket {
    id: 1,
    username: 'leihou',
    password: '123456',
    nickname: '雷猴'
  },
  RowDataPacket {
    id: 2,
    username: 'shark',
    password: '123456',
    nickname: '鲨鱼辣椒'
  },
  RowDataPacket {
    id: 3,
    username: 'cockroach',
    password: '123456',
    nickname: '蟑螂恶霸'
  }
]

复制代码

查询指定字段

// 省略部分代码
const sql = `select id, username from users;`

复制代码

返回结果:

[
  RowDataPacket { id: 1, username: 'leihou' },  
  RowDataPacket { id: 2, username: 'shark' },   
  RowDataPacket { id: 3, username: 'cockroach' }
]

复制代码

条件查询

// 省略部分代码


// 条件查询,使用 where
const sql = `select * from users where username='shark';`


// 与(查询username=shake,且nickname='鲨鱼辣椒')
const sql = `select * from users where username='shark' and nickname='鲨鱼辣椒';`


// 或(查询username='shark' 或 username='leihou')
const sql = `select * from users where username='shark' or username='leihou';`


// 非(查询 username 不等于 'shark')
const sql = `select * from users where username<>'shark';`

复制代码

模糊查询

模糊查询的关键字是 like

const sql = `select * from users where username like '%o%';`

复制代码

这个语句的意思是把 username 带 o 的数据都查出来

正序

通过指定字段排序,默认是正序(从小到大排列),也可以添加关键字 asc 。

排序的操作是使用 order by 来指定字段。

const sql = `select * from users order by id asc;`

复制代码

倒序

倒序使用 desc 关键字。

const sql = `select * from users order by id desc;`

复制代码

此时就通过 id 字段的倒序进行排列。

改 update

如果要修改数据,可以使用 update 。

比如我想将 雷猴 的 username 修改成 monkey 。

const sql = `update users set username='monkey' where nickname='雷猴';`


connection.query(sql, (err, result) => {
  if (err) {
    console.error(err)
    return
  }
  console.log(result)
})

复制代码

修改完,返回数据如下:

OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '(Rows matched: 1  Changed: 1  Warnings: 0',
  protocol41: true,
  changedRows: 1
}

复制代码

affectedRows 受影响的函数是 1 行。

此时查询一下数据,可以发现数据修改成功了。

删 delete

真实项目开发应该很少使用到删除。如果需要删除一个用户,通常是修改用户的某个字段,做成“软删除”的效果。

但还是需要知道如何删除数据库的真实内容,所以学吧~

删除 id 为 3 的数据

const sql = `delete from users where id='3';`


connection.query(sql, (err, result) => {
  if (err) {
    console.error(err)
    return
  }
  console.log(result)
})

复制代码

使用 delete 关键字,并且用 where 指定要操作 id=3 的数据。

删除成功后,控制台会输出:

OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

复制代码

以上就是 Node.js 操作 MySQL 的入门过程。

关闭连接

最后如果操作完数据库,可以使用 end() 方法关闭与 MySQL 的连接。

// 关闭连接
connection.end()

复制代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值