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 凭據。
Members 表
讓我們創建我們的第一個表:Members。這將代表我們的學生。
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('Members 表已創建!');
});
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('Members 已添加!');
});
Committees 表
現在,讓我們創建我們的 Committees 表,代表俱樂部:
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
('象棋俱樂部', 1),
('辯論隊', 2),
('話劇俱樂部', 3),
('象棋俱樂部', 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('Committees 表已創建!');
});
const committees = [
['象棋俱樂部', 1],
['辯論隊', 2],
['話劇俱樂部', 3],
['象棋俱樂部', 2]
];
connection.query('INSERT INTO Committees (name, member_id) VALUES ?', [committees], (err) => {
if (err) throw err;
console.log('Committees 已添加!');
});
現在我們設置好了表,讓我們探討不同類型的連接!
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 返回左表(Members)的所有記錄,以及右表(Committees)的匹配記錄。這就像列出所有學生,如果他們屬於任何俱樂部,則顯示他們的俱樂部。
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 返回右表(Committees)的所有記錄,以及左表(Members)的匹配記錄。這就像列出所有俱樂部,如果有的話,則顯示成員。
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)。
JOIN 類型的比較
這裡有一個方便的表格,總結了不同類型的 JOIN:
JOIN 類型 | 描述 | 使用案例 |
---|---|---|
INNER JOIN | 返回兩個表中匹配的記錄 | 當你想要存在於兩個表中的數據時 |
LEFT JOIN | 返回左表的所有記錄,右表的匹配記錄 | 當你想要第一個表的所有記錄,無論是否有匹配時 |
RIGHT JOIN | 返回右表的所有記錄,左表的匹配記錄 | 當你想要第二個表的所有記錄,無論是否有匹配時 |
結論
恭喜你!你剛剛學會了在 Node.js 中使用 MySQL 連接。記住,連接就像偵探工作——你正在從不同的來源連接信息以獲得完整的圖景。在不同的情景中練習,很快你就會成為數據庫關係的大師!
持續編程,保持好奇心,並且在過程中不忘樂趣。快樂連接!
Credits: Image by storyset