Node.js 与 MySQL 连接:初学者指南
你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索 Node.js 和 MySQL 连接的世界。如果你是编程新手,不用担心——我会成为你的友好向导,一步步解释所有内容。在本教程结束时,你将能够像专业人士一样连接表!
理解基础知识
在我们深入连接之前,让我们先了解一些基本概念。想象你正在组织一个学校俱乐部集市。你有两个列表:一个是学生列表,另一个是俱乐部列表。连接这些列表将帮助你看到哪些学生在哪些俱乐部。这基本上就是我们将在数据库中做的事情!
配置我们的环境
首先,让我们确保我们有所需的一切:
- 从官方网站安装 Node.js。
- 安装 MySQL 并设置数据库。
- 通过运行以下命令安装 Node.js 的 MySQL 模块:
npm install mysql
现在,让我们创建一个到我们数据库的连接:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'school_club_fair'
});
connection.connect((err) => {
if (err) throw err;
console.log('已连接到数据库!');
});
这段代码设置了我们的数据库连接。将 'your_username' 和 'your_password' 替换为你的实际 MySQL 凭据。
成员表
让我们创建我们的第一个表:成员表。这将代表我们的学生。
CREATE TABLE Members (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
INSERT INTO Members (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]');
在 Node.js 中创建这个表:
connection.query(`
CREATE TABLE Members (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
)
`, (err) => {
if (err) throw err;
console.log('成员表已创建!');
});
const members = [
['Alice', '[email protected]'],
['Bob', '[email protected]'],
['Charlie', '[email protected]']
];
connection.query('INSERT INTO Members (name, email) VALUES ?', [members], (err) => {
if (err) throw err;
console.log('成员已添加!');
});
委员会表
现在,让我们创建我们的委员会表,代表俱乐部:
CREATE TABLE Committees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
member_id INT,
FOREIGN KEY (member_id) REFERENCES Members(id)
);
INSERT INTO Committees (name, member_id) VALUES
('Chess Club', 1),
('Debate Team', 2),
('Drama Club', 3),
('Chess Club', 2);
在 Node.js 中:
connection.query(`
CREATE TABLE Committees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
member_id INT,
FOREIGN KEY (member_id) REFERENCES Members(id)
)
`, (err) => {
if (err) throw err;
console.log('委员会表已创建!');
});
const committees = [
['Chess Club', 1],
['Debate Team', 2],
['Drama Club', 3],
['Chess Club', 2]
];
connection.query('INSERT INTO Committees (name, member_id) VALUES ?', [committees], (err) => {
if (err) throw err;
console.log('委员会已添加!');
});
现在我们已经设置好了表,让我们探索不同类型的连接!
MySQL INNER JOIN
INNER JOIN 返回两个表中有匹配值的记录。就像找到确实在俱乐部中的学生。
connection.query(`
SELECT Members.name, Committees.name AS committee
FROM Members
INNER JOIN Committees ON Members.id = Committees.member_id
`, (err, results) => {
if (err) throw err;
console.table(results);
});
这个查询将向我们展示所有成员和他们所在的委员会。如果一个成员不在任何委员会中,他们不会出现在结果中。
MySQL LEFT JOIN
LEFT JOIN 返回左表(成员)的所有记录,以及右表(委员会)的匹配记录。就像列出所有学生,如果他们在某个俱乐部中,就显示他们的俱乐部。
connection.query(`
SELECT Members.name, Committees.name AS committee
FROM Members
LEFT JOIN Committees ON Members.id = Committees.member_id
`, (err, results) => {
if (err) throw err;
console.table(results);
});
这将显示所有成员,即使他们不在任何委员会中(他们的委员会将是 NULL)。
MySQL RIGHT JOIN
RIGHT JOIN 返回右表(委员会)的所有记录,以及左表(成员)的匹配记录。就像列出所有俱乐部,如果有的话,就显示成员。
connection.query(`
SELECT Members.name, Committees.name AS committee
FROM Members
RIGHT JOIN Committees ON Members.id = Committees.member_id
`, (err, results) => {
if (err) throw err;
console.table(results);
});
这将显示所有委员会,即使它们没有成员(成员名称将是 NULL)。
连接类型比较
下面是一个方便的表格,总结了不同类型的连接:
连接类型 | 描述 | 用例 |
---|---|---|
INNER JOIN | 返回两个表中的匹配记录 | 当你需要存在于两个表中的数据时 |
LEFT JOIN | 返回左表的所有记录,右表的匹配记录 | 当你需要第一个表的所有记录,不管是否有匹配时 |
RIGHT JOIN | 返回右表的所有记录,左表的匹配记录 | 当你需要第二个表的所有记录,不管是否有匹配时 |
结论
恭喜你!你刚刚学习了在 Node.js 中使用 MySQL 连接。记住,连接就像侦探工作——你正在从不同的来源连接信息,以获得完整的画面。在不同的场景中练习,很快你将成为数据库关系的专家!
继续编码,保持好奇心,别忘了在过程中享受乐趣。愉快的连接!
Credits: Image by storyset