Node.js - MySQL Join: руковод BEGINNERОВ
Привет, начинающие программисты! Сегодня мы отправимся в увлекательное путешествие в мир Node.js и объединений MySQL. Не волнуйтесь, если вы новички в программировании – я буду вашим доброжелательным проводником, explaining все шаг за шагом. К концу этого руководства вы будете объединять таблицы, как профессионал!
Понимание основ
Прежде чем мы погрузимся в объединения, давайте установим сцену с некоторыми базовыми концепциями. Представьте, что вы организовываете школьную ярмарку klubov. У вас есть два списка: один для студентов и другой для klubov. Объединение этих списков поможет вам увидеть, какие студенты в каких klubah. Это в принципе то, что мы будем делать с базами данных!
Настройка нашей среды
Сначала убедимся, что у нас есть все необходимое:
- Установите Node.js с официального сайта.
- Установите MySQL и настройте базу данных.
- Установите модуль MySQL для Node.js, запустив:
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('Connected to the database!');
});
Этот код устанавливает наше соединение с базой данных. Замените '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 table created!');
});
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 added!');
});
Таблица Committees
Теперь создадим нашу таблицу Committees, представляющую klubы:
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('Committees table created!');
});
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('Committees added!');
});
Теперь, когда у нас настроены таблицы, давайте рассмотрим разные типы объединений!
MySQL INNER JOIN
INNER JOIN возвращает записи, которые имеют соответствующие значения в обеих таблицах. Это как найти студентов, которые определенно в klubе.
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);
});
Этот запрос покажет нам всех членов и klubы, в которых они состоят. Если член не состоит ни в одном klubе, он не появится в результатах.
MySQL LEFT JOIN
LEFT JOIN возвращает все записи из левой таблицы (Members) и соответствующие записи из правой таблицы (Committees). Это как列出 всех студентов, показывая их klubы, если они в них состоят.
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);
});
Этот запрос покажет всех членов, даже если они не состоят ни в одном klubе (их klub будет NULL).
MySQL RIGHT JOIN
RIGHT JOIN возвращает все записи из правой таблицы (Committees) и соответствующие записи из левой таблицы (Members). Это как列出 все klubы, показывая членов, если они есть.
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);
});
Этот запрос покажет все klubы, даже если у них нет членов (имя члена будет NULL).
Сравнение типов JOIN
Вот удобная таблица, резюмирующая разные типы JOIN:
Тип JOIN | Описание | Случай использования |
---|---|---|
INNER JOIN | Возвращает соответствующие записи из обеих таблиц | Когда вы хотите данные, существующие в обеих таблицах |
LEFT JOIN | Возвращает все из левой таблицы, соответствующие из правой | Когда вы хотите все записи из первой таблицы, независимо от соответствий |
RIGHT JOIN | Возвращает все из правой таблицы, соответствующие из левой | Когда вы хотите все записи из второй таблицы, независимо от соответствий |
Заключение
Поздравляю! Вы только что узнали о объединениях MySQL в Node.js. Помните, что объединения resemble работу детектива – вы соединяете информацию из разных источников, чтобы получить полное изображение. Практикуйтесь в разных сценариях, и вскоре вы станете мастером в отношениях баз данных!
Продолжайте программировать, сохраняйте любопытство и не забывайте веселиться на этом пути. Счастливо объединяйтесь!
Credits: Image by storyset