Node.js - MySQL 조인: 초보자 가이드

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 Node.js와 MySQL 조인의 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라면 걱정하지 마세요 - 나는 당신의 친절한 가이드로, 모든 것을 단계별로 설명할 것입니다. 이 튜토리얼의 끝까지 따라오면, 당신은 전문가처럼 테이블을 조인할 수 있을 것입니다!

Node.js - MySQL Join

기본 개념 이해

조인에 들어가기 전에, 몇 가지 기본 개념을 설정해 보겠습니다. 학교 클럽 박람회를 조직하는 상상해 봅시다. 학생 목록과 클럽 목록이 두 개 있습니다. 이 두 개의 목록을 조인하면, 어떤 학생이 어떤 클럽에 속해 있는지 볼 수 있습니다. 데이터베이스에서 우리가 할 일은 바로 이와 같습니다!

환경 설정

먼저 필요한 모든 것을 확인해 보겠습니다:

  1. 공식 웹사이트에서 Node.js를 설치합니다.
  2. MySQL을 설치하고 데이터베이스를 설정합니다.
  3. 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
('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 테이블이 생성되었습니다!');
});

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가 추가되었습니다!');
});

이제 우리의 테이블이 설정되었으므로, 다양한 종류의 조인을 탐구해 보겠습니다!

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