关于前端:NodeJS-5分钟-连接MySQL-增删改查

35次阅读

共计 4125 个字符,预计需要花费 11 分钟才能阅读完成。

本文简介

本文次要解说在 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 usersusers 表增加数据。这条语句其实很简略,翻译一下每个单词就能懂这条语句的内容。

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

数据创立胜利后,控制台会打印以下内容:

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

insertId 是插入的 IDaffectedRows 是受影响的行数。通常新增胜利后,咱们能够把 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%';`

这个语句的意思是把 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 行。

此时查问一下数据,能够发现数据批改胜利了。

删 delete

实在我的项目开发应该很少应用到删除。如果须要删除一个用户,通常是批改用户的某个字段,做成“软删除”的成果。

但还是须要晓得如何删除数据库的实在内容,所以学吧~

删除 id3 的数据

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()

举荐浏览

学完本章,再配合《node http 申请》里的操作,就能够写一些简略的接口了。

👍《node http》

👍《console.log 也能插图》

👍《前端须要的收费在线 api 接口》

👍《『前端必备』本地数据接口 —— json-server 从入门到收缩》

点赞 + 关注 + 珍藏 = 学会了

正文完
 0