共计 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
进入创立表的界面
下面做了这几步操作:
- 设置表名。
- 增加字段。
PK
是主键,NN
是不能为空,AI
是自增。 - 点击 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 步:
- 引入
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 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()
举荐浏览
学完本章,再配合《node http 申请》里的操作,就能够写一些简略的接口了。
👍《node http》
👍《console.log 也能插图》
👍《前端须要的收费在线 api 接口》
👍《『前端必备』本地数据接口 —— json-server 从入门到收缩》
点赞 + 关注 + 珍藏 = 学会了