Node.js - MySQL Join: Ein Anfängerleitfaden

Hallo, angehende Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt von Node.js und MySQL-Joins. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Ihr freundlicher Guide sein und alles Schritt für Schritt erklären. Am Ende dieses Tutorials werden Sie Tabellen wie ein Profi verknüpfen können!

Node.js - MySQL Join

Grundlagen verstehen

Bevor wir uns den Joins zuwenden, lassen Sie uns mit einigen grundlegenden Konzepten den Boden bereiten. Stellen Sie sich vor, Sie organisieren eine Schulclubmesse. Sie haben zwei Listen: eine für Schüler und eine für Clubs. Das Verknüpfen dieser Listen würde Ihnen helfen zu sehen, welche Schüler in welchen Clubs sind. Genau das werden wir mit Datenbanken machen!

Unsere Umgebung einrichten

Zuerst stellen wir sicher, dass wir alles Notwendige haben:

  1. Installieren Sie Node.js von der offiziellen Website.
  2. Installieren Sie MySQL und richten Sie eine Datenbank ein.
  3. Installieren Sie das MySQL-Modul für Node.js, indem Sie ausführen:
npm install mysql

Nun erstellen wir eine Verbindung zu unserer Datenbank:

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('Mit der Datenbank verbunden!');
});

Ersetzen Sie 'your_username' und 'your_password' durch Ihre tatsächlichen MySQL-Anmeldeinformationen.

Mitglieder-Tabelle

Erstellen wir unsere erste Tabelle: Mitglieder. Diese repräsentiert unsere Schüler.

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]');

Um diese Tabelle in Node.js zu erstellen:

connection.query(`
CREATE TABLE Members (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
)
`, (err) => {
if (err) throw err;
console.log('Mitglieder-Tabelle erstellt!');
});

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('Mitglieder hinzugefügt!');
});

Komitees-Tabelle

Nun erstellen wir unsere Komitees-Tabelle, die die Clubs repräsentiert:

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
('Schachclub', 1),
('Debattenteam', 2),
('Dramaklub', 3),
('Schachclub', 2);

In 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('Komitees-Tabelle erstellt!');
});

const committees = [
['Schachclub', 1],
['Debattenteam', 2],
['Dramaklub', 3],
['Schachclub', 2]
];

connection.query('INSERT INTO Committees (name, member_id) VALUES ?', [committees], (err) => {
if (err) throw err;
console.log('Komitees hinzugefügt!');
});

Nun, da wir unsere Tabellen eingerichtet haben, erkunden wir verschiedene Arten von Joins!

MySQL INNER JOIN

Ein INNER JOIN gibt Datensätze zurück, die übereinstimmende Werte in beiden Tabellen haben. Es ist so, als ob man Schüler findet, die definitiv in einem Club sind.

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);
});

Diese Abfrage zeigt uns alle Mitglieder und die Clubs, in denen sie sind. Wenn ein Mitglied in keinem Club ist, wird es in den Ergebnissen nicht appearieren.

MySQL LEFT JOIN

Ein LEFT JOIN gibt alle Datensätze aus der linken Tabelle (Mitglieder) und die übereinstimmenden Datensätze aus der rechten Tabelle (Komitees) zurück. Es ist so, als ob man alle Schüler auflistet und ihre Clubs anzeigt, wenn sie in einem sind.

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);
});

Dies zeigt alle Mitglieder, auch wenn sie in keinem Club sind (deren Club wird NULL sein).

MySQL RIGHT JOIN

Ein RIGHT JOIN gibt alle Datensätze aus der rechten Tabelle (Komitees) und die übereinstimmenden Datensätze aus der linken Tabelle (Mitglieder) zurück. Es ist so, als ob man alle Clubs auflistet und die Mitglieder anzeigt, wenn es welche gibt.

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);
});

Dies zeigt alle Clubs, auch wenn sie keine Mitglieder haben (der Mitgliedsname wird NULL sein).

Vergleich der JOIN-Typen

Hier ist eine praktische Tabelle, die die verschiedenen Arten von Joins zusammenfasst:

JOIN-Typ Beschreibung Verwendungszweck
INNER JOIN Gibt übereinstimmende Datensätze aus beiden Tabellen zurück Wenn Sie Daten möchten, die in beiden Tabellen existieren
LEFT JOIN Gibt alle aus der linken Tabelle, übereinstimmende aus der rechten Wenn Sie alle Datensätze aus der ersten Tabelle möchten, unabhängig von den Übereinstimmungen
RIGHT JOIN Gibt alle aus der rechten Tabelle, übereinstimmende aus der linken Wenn Sie alle Datensätze aus der zweiten Tabelle möchten, unabhängig von den Übereinstimmungen

Schlussfolgerung

Glückwunsch! Sie haben gerade über MySQL-Joins in Node.js gelernt. Denken Sie daran, dass Joins wie Detektivarbeit sind – Sie verbinden Informationen aus verschiedenen Quellen, um ein vollständiges Bild zu bekommen. Üben Sie mit verschiedenen Szenarien und bald werden Sie ein Meister der Datenbankbeziehungen sein!

Weiterschreiben, neugierig bleiben und nicht vergessen, Spaß zu haben! Frohes Verbinden!

Credits: Image by storyset