Grundlagen-Tutorial mit Schritt-für-Schritt-Beispielen
1. Was ist eine relationale Datenbank?
Eine Datenbank speichert strukturierte Informationen. Relational bedeutet, dass Daten in Tabellen organisiert und durch Schlüssel miteinander verbunden werden. Ein Kunde kann mehrere Bestellungen besitzen, ohne dass jede Bestellung den Kundennamen mehrfach speichern muss.
2. Tabellen, Zeilen und Spalten
Eine Tabelle Customers enthält zum Beispiel CustomerId, Name und City. Jede Zeile repräsentiert einen Kunden. In Orders verweist CustomerId auf Customers. Ein Primärschlüssel identifiziert einen Datensatz, ein Fremdschlüssel sichert die Beziehung.
3. Datenmodell anlegen
Das folgende Beispiel verwendet SQL-Server-Syntax. In anderen Datenbanksystemen können Datentypen und Befehle abweichen.
CREATE TABLE Customers (
CustomerId int PRIMARY KEY,
Name nvarchar(100) NOT NULL
);
CREATE TABLE Orders (
OrderId int PRIMARY KEY,
CustomerId int NOT NULL,
TotalAmount decimal(12,2) NOT NULL,
CONSTRAINT FK_Orders_Customers
FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId)
);
INSERT INTO Customers VALUES (1, 'Example Ltd'), (2, 'Sample GmbH');
INSERT INTO Orders VALUES (100, 1, 125.00), (101, 1, 89.50);
4. Daten abfragen mit SELECT
SELECT legt fest, welche Spalten du lesen möchtest. WHERE filtert, ORDER BY sortiert. Vermeide bei produktiven Abfragen unnötiges SELECT *; wähle nur tatsächlich benötigte Spalten.
5. Wie funktioniert ein JOIN?
Ein INNER JOIN kombiniert passende Zeilen beider Tabellen. Ein LEFT JOIN liefert auch Kunden ohne Bestellung. Verbinde Tabellen über ihre Schlüssel und prüfe die Kardinalität: Bei mehreren Bestellungen pro Kunde entstehen mehrere Ergebniszeilen.
SELECT c.Name, COUNT(o.OrderId) AS OrderCount,
COALESCE(SUM(o.TotalAmount), 0) AS Total
FROM Customers AS c
LEFT JOIN Orders AS o ON o.CustomerId = c.CustomerId
GROUP BY c.CustomerId, c.Name
ORDER BY c.Name;
6. GROUP BY und Summen
Mit COUNT, SUM und GROUP BY aggregierst du Daten. Bei einem LEFT JOIN liefert COUNT(o.OrderId) für Kunden ohne Bestellung null, während COUNT(*) trotzdem die Kundenergebniszeile zählt. Beim Umgang mit Geldwerten sind Dezimaltypen und geeignete Rundung wichtig.
7. Sichere SQL-Abfragen
Nutze parametrisierte Queries statt SQL-Strings aus Benutzereingaben zusammenzusetzen. Rechte solltest du auf benötigte Tabellen und Aktionen beschränken. Für viele Business-Central-SaaS-Integrationen sind unterstützte APIs statt direkter SQL-Datenbankzugriffe der richtige Weg.
8. Typische Fehler
Häufige Fehler sind fehlende JOIN-Bedingungen, versehentlich verdoppelte Summen, NULL-Werte und Änderungen ohne WHERE. UPDATE und DELETE zunächst in einer gesicherten Testdatenbank üben. Verwende Transaktionen bewusst und kontrolliere betroffene Zeilen.
9. Übungen
Ergänze einen dritten Kunden ohne Bestellung. Liste alle Kunden samt Bestellanzahl mit LEFT JOIN. Filtere Bestellungen über 100 EUR. Erkläre den Unterschied zwischen INNER und LEFT JOIN.
Kommentare (0)
Noch keine Kommentare. Schreibe den ersten Beitrag zur Diskussion.