Node.js - MySQL Join: руковод BEGINNERОВ

Привет, начинающие программисты! Сегодня мы отправимся в увлекательное путешествие в мир Node.js и объединений MySQL. Не волнуйтесь, если вы новички в программировании – я буду вашим доброжелательным проводником, explaining все шаг за шагом. К концу этого руководства вы будете объединять таблицы, как профессионал!

Node.js - MySQL Join

Понимание основ

Прежде чем мы погрузимся в объединения, давайте установим сцену с некоторыми базовыми концепциями. Представьте, что вы организовываете школьную ярмарку klubov. У вас есть два списка: один для студентов и другой для klubov. Объединение этих списков поможет вам увидеть, какие студенты в каких klubah. Это в принципе то, что мы будем делать с базами данных!

Настройка нашей среды

Сначала убедимся, что у нас есть все необходимое:

  1. Установите Node.js с официального сайта.
  2. Установите MySQL и настройте базу данных.
  3. Установите модуль 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