NodeJS 5分钟 连接MySQL 增删改查

本文简介

本文主要讲解在 Node.js 里如何连接 MySQL ,并分别操作一下 增删改查

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

  • MySQL 下载地址
  • MySQL Workbench 下载地址
  • 初始化项目

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

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

    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`));
    

    使用上面这条命令安装 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步:

  • 引入 mysql
  • 连接,使用 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 usersusers 表添加数据。这条语句其实很简单,翻译一下每个单词就能懂这条语句的内容。

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

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

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

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

    查 select

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

    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%';`
    

    这个语句的意思是把 usernameo 的数据都查出来

    通过指定字段排序,默认是正序(从小到大排列),也可以添加关键字 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行。

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