Node.js - 从 MySQL 中选择数据

你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索 Node.js 和 MySQL 的世界。作为你友善的计算机科学老师,我将引导你使用 Node.js 从 MySQL 数据库中检索数据的过程。如果你是编程新手,不用担心——我们将从基础知识开始,逐步深入。所以,拿起一杯咖啡(或者你最喜欢的饮料),让我们一起开始吧!

Node.js - MySQL Select From

Node.js 和 MySQL 是什么?

在我们开始编写代码之前,让我们快速了解一下 Node.js 和 MySQL:

  1. Node.js:它是一个强大的 JavaScript 运行时,允许你在计算机上运行 JavaScript,而不仅仅是在网页浏览器中。
  2. MySQL:它是一个流行的数据库系统,用于为你的应用程序存储和管理数据。

想象 Node.js 是一位熟练的厨师,而 MySQL 是一个组织良好的冰箱。我们的厨师(Node.js)需要从冰箱(MySQL)中取出食材(数据)来制作美味的菜肴(网页应用)。今天,我们将学习我们的厨师如何高效地获取这些食材!

设置我们的环境

首先,我们需要设置我们的厨房(开发环境)。以下是你需要做的:

  1. 从官方网站安装 Node.js(https://nodejs.org)。
  2. 从官方网站安装 MySQL(https://www.mysql.com)。
  3. 为你的项目创建一个新的目录。
  4. 在该目录中打开终端或命令提示符。
  5. 运行 npm init -y 来创建一个 package.json 文件。
  6. 通过运行 npm install mysql 安装 MySQL 包。

太好了!现在我们的厨房已经准备好进行一些编码魔法了!

连接到 MySQL

让我们首先建立到我们 MySQL 数据库的连接。以下是一个例子:

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});

connection.connect((err) => {
if (err) {
console.error('连接到数据库时出错:' + err.stack);
return;
}
console.log('已连接到数据库。');
});

让我们分解一下:

  1. 我们导入了 MySQL 包。
  2. 我们创建了一个带有我们数据库详细信息的连接对象。
  3. 我们使用 connect() 方法建立连接。
  4. 如果有错误,我们记录它。否则,我们确认连接。

请确保将 'your_username''your_password''your_database_name' 替换为你的实际 MySQL 凭据。

基本的 SELECT 查询

现在我们已经连接上了,让我们获取一些数据!以下是一个简单的 SELECT 查询:

connection.query('SELECT * FROM users', (error, results, fields) => {
if (error) throw error;
console.log('用户列表:', results);
});

这个查询选择了 'users' 表中的所有列(*)。结果在回调函数中返回。如果有错误,我们抛出它。否则,我们记录结果。

带有 WHERE 子句的 SELECT

通常,我们想要检索特定的数据。让我们使用 WHERE 子句:

const userId = 1;
connection.query('SELECT * FROM users WHERE id = ?', [userId], (error, results) => {
if (error) throw error;
console.log('找到的用户:', results[0]);
});

在这里,我们选择了一个具有特定 ID 的用户。'?' 是一个占位符,而 [userId] 是用来替换它的值。这可以防止 SQL 注入攻击——始终对用户输入使用占位符!

带有 ORDER BY 的 SELECT

想要排序你的结果吗?使用 ORDER BY:

connection.query('SELECT * FROM users ORDER BY name ASC', (error, results) => {
if (error) throw error;
console.log('按姓名排序的用户:', results);
});

这个查询按姓名升序排序用户。将 ASC 改为 DESC 可以进行降序排序。

带有 LIMIT 的 SELECT

要限制结果数量,使用 LIMIT:

connection.query('SELECT * FROM users LIMIT 5', (error, results) => {
if (error) throw error;
console.log('前 5 个用户:', results);
});

这个查询只返回表中的前 5 个用户。

结合多个子句

让我们把我们学到的结合起来:

const searchName = 'John';
const limit = 10;

connection.query(
'SELECT * FROM users WHERE name LIKE ? ORDER BY created_at DESC LIMIT ?',
['%' + searchName + '%', limit],
(error, results) => {
if (error) throw error;
console.log('搜索结果:', results);
}
);

这个复杂的查询:

  1. 搜索名称中包含 'John' 的用户
  2. 按创建日期(最新优先)排序结果
  3. 将结果限制为 10 个

关闭连接

完成操作后,请记住关闭你的连接:

connection.end((err) => {
if (err) {
console.error('关闭连接时出错:' + err.stack);
return;
}
console.log('连接成功关闭。');
});

这确保你没有留下任何打开的连接,这可能会导致性能问题。

方法总结

以下是我们在本文中介绍的方法的便捷表格总结:

方法 描述
createConnection() 创建到 MySQL 数据库的连接
connect() 建立数据库连接
query() 执行 SQL 查询
end() 关闭数据库连接

结论

恭喜你!你刚刚学习了如何使用 Node.js 和 MySQL 执行 SELECT 查询。记住,熟能生巧。尝试创建不同的查询,尝试各种子句,很快你将成为一名数据库大师!

在我们结束之前,这里有一个编程幽默:为什么程序员喜欢暗模式?因为光会吸引虫子!?

继续编码,保持好奇心,别忘了在过程中享受乐趣。下次见,愉快地查询!

Credits: Image by storyset