Ein INNER JOIN ist ein Begriff aus der Datenbankabfrage (SQL). Er wird verwendet, um Datensätze aus zwei (oder mehr) Tabellen zu kombinieren – und zwar nur die Datensätze, bei denen es in beiden Tabellen passende Werte gibt.
Du hast zwei Tabellen:
Tabelle: Kunden
KundenID | Name |
---|---|
1 | Anna |
2 | Bernd |
3 | Clara |
Tabelle: Bestellungen
BestellID | KundenID | Produkt |
---|---|---|
101 | 1 | Buch |
102 | 2 | Laptop |
103 | 4 | Handy |
Jetzt willst du wissen, welche Kunden Bestellungen gemacht haben. Dafür brauchst du nur die Kunden, die in beiden Tabellen vorkommen.
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
INNER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;
Name | Produkt |
---|---|
Anna | Buch |
Bernd | Laptop |
Clara hat nichts bestellt → wird nicht angezeigt.
Die Bestellung mit KundenID 4 hat keinen passenden Kunden → wird ebenfalls ignoriert.
Ein INNER JOIN zeigt nur die Datensätze, bei denen es Übereinstimmungen in beiden Tabellen gibt.
Ein expliziter Join ist eine klare, direkte Formulierung eines Joins in einer SQL-Abfrage, bei der die Join-Art (z. B. INNER JOIN
, LEFT JOIN
, RIGHT JOIN
, FULL OUTER JOIN
) ausdrücklich im SQL-Statement genannt wird.
SELECT *
FROM kunden
INNER JOIN bestellungen
ON kunden.kunden_id = bestellungen.kunden_id;
Hier sieht man deutlich:
Welche Tabellen verbunden werden (kunden
, bestellungen
)
Welche Join-Art verwendet wird (INNER JOIN
)
Welche Bedingung für den Join gilt (ON kunden.kunden_id = bestellungen.kunden_id
)
Ein impliziter Join ist die ältere Schreibweise mit einem Komma in der FROM
-Klausel, wobei die Join-Bedingung in der WHERE
-Klausel steht:
SELECT *
FROM kunden, bestellungen
WHERE kunden.kunden_id = bestellungen.kunden_id;
Diese Variante ist funktional gleich, aber weniger klar und nicht für komplexe Joins geeignet.
Lesbarer und strukturierter, vor allem bei mehreren Tabellen
Klarere Trennung von Join-Bedingungen und Filterbedingungen (ON
vs. WHERE
)
Empfohlen in moderner SQL-Programmierung
Das Flask Framework ist ein beliebtes, leichtgewichtiges Webframework für die Programmiersprache Python. Es wird häufig für die Entwicklung von Webanwendungen und APIs verwendet und zeichnet sich durch seine Einfachheit und Flexibilität aus. Flask ist ein sogenanntes Micro-Framework, da es nur die grundlegenden Funktionen für die Webentwicklung bietet und keine unnötigen Zusatzfunktionen oder Bibliotheken enthält. Dadurch bleibt es schlank und anpassungsfähig.
Flask-SQLAlchemy
oder Flask-Login
hinzugefügt werden.Flask eignet sich besonders gut für:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
Im Vergleich zu Django (einem umfassenderen Python-Webframework) ist Flask weniger umfangreich, bietet jedoch mehr Freiheit. Während Django eine „Batteries included“-Philosophie verfolgt und viele Funktionen bereits integriert hat, ist Flask ideal, wenn du nur das benötigst, was du selbst einbauen möchtest.
Strapi ist ein Headless CMS (Content Management System), das auf JavaScript basiert und speziell für Entwickler entwickelt wurde. Es bietet eine flexible und offene Lösung zur Verwaltung von Inhalten und APIs. Hier sind die wichtigsten Merkmale von Strapi:
Kirby CMS ist ein flexibles, dateibasiertes Content-Management-System, das sich besonders für Entwickler und Designer eignet, die Wert auf maximale Kontrolle über ihre Projekte legen. Es wurde von Bastian Allgeier entwickelt und ist für seinen minimalistischen Ansatz und die hohe Anpassungsfähigkeit bekannt. Hier sind die wichtigsten Merkmale von Kirby CMS:
Kirby speichert Inhalte in einfachen Textdateien (meistens Markdown oder YAML), anstatt eine relationale Datenbank wie MySQL zu nutzen. Das macht es ideal für kleine bis mittelgroße Projekte, bei denen die Installation und Wartung einer Datenbank überflüssig ist.
Kirby bietet keine vorgefertigten Themes, sondern gibt Entwicklern die Freiheit, Templates und Layouts vollständig selbst zu erstellen. Die Struktur basiert auf PHP, was Entwicklern ermöglicht, dynamische Websites nach ihren Vorstellungen zu gestalten.
Das Panel ist eine intuitive Benutzeroberfläche, über die Redakteure Inhalte bearbeiten können. Es bietet eine klare Struktur und kann individuell an die Anforderungen des Projekts angepasst werden, um eine benutzerfreundliche Erfahrung zu gewährleisten.
Kirby ist besonders für Webentwickler attraktiv, da es:
Kirby ist nicht kostenlos. Es bietet eine kostenfreie Testversion, aber für den produktiven Einsatz muss eine Lizenz erworben werden. Dies macht es besonders für professionelle Projekte interessant, da es ohne Abhängigkeit von Werbefinanzierung entwickelt wird.
Kirby eignet sich für:
Kirby CMS ist ideal für Projekte, bei denen maximale Flexibilität und Kontrolle gefragt sind. Es kombiniert eine einfache Inhaltsverwaltung mit leistungsstarker Entwicklerfreiheit, was es zu einem Favoriten für Designer und Entwickler macht, die von Grund auf eigene Websites erstellen möchten.
MariaDB ist ein relationales Datenbankmanagementsystem (RDBMS), das als Open-Source-Alternative zu MySQL entwickelt wurde. Es wurde 2009 von den ursprünglichen Entwicklern von MySQL ins Leben gerufen, nachdem MySQL von Oracle übernommen wurde. Ziel war es, eine vollständig offene und kompatible Version von MySQL bereitzustellen, die unabhängig bleibt.
Kompatibilität mit MySQL:
Erweiterte Funktionen:
Aktive Weiterentwicklung:
MariaDB ist eine leistungsstarke und flexible Datenbanklösung, die vor allem wegen ihrer Offenheit, Sicherheit und Kompatibilität mit MySQL in der Entwickler-Community sehr geschätzt wird.
Der LEMP-Stack ist eine Sammlung von Software, die häufig zusammen verwendet wird, um dynamische Websites und Webanwendungen zu hosten. Der Begriff "LEMP" steht für die einzelnen Komponenten des Stacks:
Linux: Das Betriebssystem, auf dem der Stack läuft. Es ist die Basis, die die anderen Softwarekomponenten unterstützt.
Nginx (ausgesprochen "Engine-X"): Ein leistungsstarker, ressourcenschonender Webserver. Nginx wird oft bevorzugt, weil es besser für die Verarbeitung von gleichzeitigen Verbindungen skaliert als Apache.
MySQL (oder MariaDB): Die relationale Datenbank, die die Daten speichert. MySQL wird oft in Kombination mit PHP verwendet, um dynamische Inhalte zu erzeugen. In modernen Setups wird MariaDB, eine Abspaltung von MySQL, häufig verwendet.
PHP, Python oder Perl: Die Skriptsprache, die für die serverseitige Programmierung verwendet wird. PHP ist dabei besonders häufig in der Webentwicklung vertreten, um Inhalte aus der Datenbank dynamisch auf Webseiten darzustellen.
Der LEMP-Stack ist eine moderne Alternative zum bekannteren LAMP-Stack, bei dem Apache den Webserver darstellt.
Ein objektorientiertes Datenbanksystem (OODBMS) ist ein Datenbanksystem, das die Prinzipien der objektorientierten Programmierung (OOP) mit den Funktionalitäten einer Datenbank kombiniert. Es ermöglicht das Speichern, Abrufen und Verwalten von Daten in Form von Objekten, wie sie in objektorientierten Programmiersprachen (z. B. Java, Python oder C++) definiert werden.
Objektmodell:
Klassen und Vererbung:
Kapselung:
Persistenz:
Identität:
Komplexe Datentypen:
Objektorientierte Datenbanken sind besonders nützlich, wenn es darum geht, mit komplexen, hierarchischen oder verschachtelten Datenstrukturen zu arbeiten, wie sie in vielen modernen Softwareprojekten vorkommen.
Object Query Language (OQL) ist eine Abfragesprache, die ähnlich wie SQL (Structured Query Language) funktioniert, aber speziell für objektorientierte Datenbanken entwickelt wurde. Sie wird verwendet, um Daten aus objektorientierten Datenbanksystemen (OODBs) abzufragen, die Daten als Objekte speichern. OQL wurde als Teil des Object Data Management Group (ODMG)-Standards definiert.
Objektorientierte Ausrichtung:
Ähnlichkeit mit SQL:
Abfragen von komplexen Objekten:
Unterstützung für Methoden:
Kompatibilität mit objektorientierten Programmiersprachen:
Angenommen, es gibt eine Datenbank mit einer Klasse Person
mit den Attributen Name
und Age
. Eine OQL-Abfrage könnte wie folgt aussehen:
SELECT p.Name
FROM Person p
WHERE p.Age > 30
Diese Abfrage gibt die Namen aller Personen zurück, deren Alter größer als 30 ist.
In der Praxis ist OQL weniger populär als SQL, da relationale Datenbanken nach wie vor weit verbreitet sind. Allerdings ist OQL in spezialisierten Anwendungen, die objektorientierte Datenmodelle nutzen, sehr leistungsfähig.
Die Data Definition Language (DDL) ist ein Bestandteil von SQL (Structured Query Language) und umfasst Befehle, die zur Definition und Verwaltung der Struktur einer Datenbank verwendet werden. DDL-Befehle ändern die Metadaten einer Datenbank, also Informationen über Tabellen, Indizes, Schemata und andere Datenbankobjekte, anstatt die eigentlichen Daten zu manipulieren.
1. CREATE
Wird verwendet, um neue Datenbankobjekte wie Tabellen, Schemata, Views oder Indizes zu erstellen.
Beispiel:
CREATE TABLE Kunden (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Alter INT
);
2. ALTER
Dient zur Änderung der Struktur von existierenden Objekten, z. B. Hinzufügen oder Entfernen von Spalten.
Beispiel:
ALTER TABLE Kunden ADD Email VARCHAR(100);
3. DROP
Entfernt ein Datenbankobjekt (z. B. eine Tabelle) dauerhaft.
Beispiel:
DROP TABLE Kunden;
4. TRUNCATE
Löscht alle Daten aus einer Tabelle, behält jedoch die Struktur der Tabelle bei. Es ist schneller als ein DELETE
, da keine Transaktionsprotokolle erstellt werden.
Beispiel:
TRUNCATE TABLE Kunden;
DDL ist essenziell für das Design und die Verwaltung einer Datenbank und wird meist zu Beginn eines Projekts oder bei strukturellen Änderungen verwendet.