Node.js - 从 MySQL 中选择数据
你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索 Node.js 和 MySQL 的世界。作为你友善的计算机科学老师,我将引导你使用 Node.js 从 MySQL 数据库中检索数据的过程。如果你是编程新手,不用担心——我们将从基础知识开始,逐步深入。所以,拿起一杯咖啡(或者你最喜欢的饮料),让我们一起开始吧!
Node.js 和 MySQL 是什么?
在我们开始编写代码之前,让我们快速了解一下 Node.js 和 MySQL:
- Node.js:它是一个强大的 JavaScript 运行时,允许你在计算机上运行 JavaScript,而不仅仅是在网页浏览器中。
- MySQL:它是一个流行的数据库系统,用于为你的应用程序存储和管理数据。
想象 Node.js 是一位熟练的厨师,而 MySQL 是一个组织良好的冰箱。我们的厨师(Node.js)需要从冰箱(MySQL)中取出食材(数据)来制作美味的菜肴(网页应用)。今天,我们将学习我们的厨师如何高效地获取这些食材!
设置我们的环境
首先,我们需要设置我们的厨房(开发环境)。以下是你需要做的:
- 从官方网站安装 Node.js(https://nodejs.org)。
- 从官方网站安装 MySQL(https://www.mysql.com)。
- 为你的项目创建一个新的目录。
- 在该目录中打开终端或命令提示符。
- 运行
npm init -y
来创建一个 package.json 文件。 - 通过运行
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('已连接到数据库。');
});
让我们分解一下:
- 我们导入了 MySQL 包。
- 我们创建了一个带有我们数据库详细信息的连接对象。
- 我们使用
connect()
方法建立连接。 - 如果有错误,我们记录它。否则,我们确认连接。
请确保将 '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);
}
);
这个复杂的查询:
- 搜索名称中包含 'John' 的用户
- 按创建日期(最新优先)排序结果
- 将结果限制为 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