介绍
为了方便地访问和存储数据,我们应该将数据存储并保持易于访问。这种存储方式应该是高效、快速和可靠的。我们使用数据库的原因是因为相较于访问文件,数据库的访问速度更快,特别是在数据量增加的情况下。此外,它还允许我们在无需阅读整个文档的情况下定位信息。鉴于本单元对基于SQL的数据库的关注,我们将深入研究MySQL。
以下章节将讨论如何在NodeJS上安装MySQL并使用MySQL模块。接下来,我们将深入探讨如何在MySQL数据库中创建、插入/更新和删除数据。如果您对PostgreSQL和MongoDB感兴趣,请查看关于这些主题的可选部分。
安装MySQL
MySQL是由Oracle开发的一种关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)。在本节中,我们将看到如何在Windows平台上安装MySQL。
MySQL仅适用于Microsoft Windows 64位操作系统。有关支持的Windows平台信息,请参阅 https://www.mysql.com/support/supportedplatforms/database.html。
在Microsoft Windows上安装MySQL有不同的方法。如果您想在Windows环境中安装MySQL,使用MySQL安装程序是最简单的方法。MySQL安装程序为您提供了一个易于使用的向导,帮助您安装MySQL以及以下组件:
- MySQL Server
- 所有可用的连接器
- 带有样本数据模型的MySQL Workbench
- 适用于Excel和Microsoft Visual Studio的MySQL通知工具
- MySQL样本数据库
- MySQL文档
要下载MySQL安装程序,请访问以下链接http://dev.mysql.com/downloads/installer/。
要使用MySQL安装程序安装MySQL,请双击MySQL安装程序文件并按照说明进行操作。
要在MacOS上安装MySQL,请参阅以下链接:https://dev.mysql.com/doc/refman/5.7/en/macos-installation-pkg.html
在Windows上安装MySQL的视频:https://www.youtube.com/watch?v=OM4aZJW_Ojs
在MacOS上安装MySQL的视频:https://www.youtube.com/watch?v=-BDbOOY9jsc
在 MySQL 上创建数据库
可以使用 CREATE DATABASE 语句创建新的 SQL 数据库。
CREATE DATABASE `testDB` ;
创建数据库后,必须显式选择数据库以供使用。您可以使用语句“use testDB;”使testDB成为当前数据库。
USE testDB;
CREATE TABLE 语句可用于在数据库中创建新表。
CREATE TABLE Persons(
id int(5),
name varchar(50),
suburb varchar(50),
city varchar(50),
PRIMARY KEY (id)
);
可以使用INSERT INTO命令将新记录插入到Persons表中。
INSERT INTO Persons(id, name, city) VALUES
(1, 'John', 'Hawthorn', 'Melbourne'),
(2, 'Jane', 'Paramatta', 'Sydney')
(3, 'Tom', 'CBD', 'Brisbane');
在 NodeJS 上使用 MySQL 模块
本节演示如何安装 mysql 模块,这是一个用于 MySQL 的 JavaScript 客户端。在本模块中,您将学习如何使用 MySQL 模块连接到 MySQL 数据库并执行通常的 CRUD 操作。在继续之前,请确保您有权访问 MySQL 数据库。
访问MySQL数据库后,打开Powershell或终端并创建一个新文件夹。
mkdir databaseMysql
然后,导航到新创建的文件夹,并使用以下命令创建一个新项目,该命令将创建一个 package.json 文件
npm init -y
然后,安装 mysql 模块。
npm install mysql2
下面的代码导入 mysql 模块。请注意,mysql 和 mysql2 几乎相同,只是 mysql2 更兼容 API,这在以下部分中非常有用。
const mysql = require('mysql2');
以下代码创建与 MySQL 数据库的连接。此脚本包含一个连接变量以及 MySQL 数据库的配置,其中包括用于连接的主机、端口、用户(mysql 连接的用户名)、密码(用于 mysql 连接)和数据库(我们要连接到的数据库节点应用程序)。系统中的默认 Mysql 数据库端口为 3306。此代码将在下面的视频中进一步演示。
const connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'testDB'
});
然后,我们将在应用程序和 MySQL 之间建立连接。因此,我们必须在上面已经定义的连接变量上调用 connect 函数。
connection.connect((err) => {
if (err) throw err;
console.log('Connected!');
});
成功建立连接后,控制台中应显示“已连接”消息。如果发生故障(例如,输入了错误的密码),则会触发回调,该回调将传递 JavaScript Error 对象 (err) 的实例。
读取数据库
为了从数据库中读取数据,我们必须调用一个名为 query 的函数并提供一个 SQL 查询作为参数。
connection.query('SELECT * FROM Persons', (err,rows) => {
if(err) throw err;
console.log('Data received from Db:');
console.log(rows);
rows.forEach( (row) => {
console.log(`${row.LastName} lives in ${row.City}`);
})
});
创建/将数据插入数据库
调用 query() 并发送相应的 SQL 语句以插入数据,如下所示。
const person = { PersonID: 220, LastName: 'Craig', FirstName: 'Buckler', Address: 'Burwood', city: 'London' };
connection.query('INSERT INTO Persons SET ?', person, (err, res) => {
if(err) throw err;
console.log('Last insert ID:', res.insertId);
});
更新
要更新数据库表,我们需要使用 query() 函数并发送必要的 SQL 语句,如下所示。已更改的行数可以通过使用 result.changedRows 获取
connection.query(
'UPDATE Persons SET City = ? Where PersonID = ?',
['Sydney', 221],
(err, result) => {
if (err) throw err;
console.log(`Changed ${result.changedRows} row(s)`);
}
);
删除
要从数据库表中删除数据,我们需要使用 query() 函数并发送必要的 SQL 语句,如下所示。
connection.query(
'DELETE FROM Persons WHERE PersonID = ?', [221], (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
}
);