Datenbanken mit Chat GPT
Die Eisverkauf Datenbank und Tutorial ist mit Hilfe von Chat GPT erstanden.
Eisverkauf Datenbank
Gib eine beispielhafte Datenbank sqllite an mit mindestens 7 Entitäten zum Themenbereich Eisverkauf an. Stelle die Datenbank als mermaid Diagramm dar und gib das Relationenschemata der Tabelle an.
SQL Tutorial
Dieses Tutorial führt dich schrittweise durch die grundlegenden SQL-Abfragen und gibt Hilfestellungen für jede Abfrage an.
Voraussetzungen
Bevor wir beginnen, stellen sicher, dass du Zugriff auf eine Datenbank hast, in der du die Abfragen ausführen kannst. Du kannst eine beliebige SQL-Datenbank verwenden, z. B. MySQL, PostgreSQL oder SQLite.
Verbindung zur Datenbank herstellen
Stelle eine Verbindung zur Datenbank her, entweder über die Befehlszeile oder ein Datenbankverwaltungstool wie MySQL Workbench oder SQLite Studio.
-- Beispiel für eine Verbindung zur SQLite-Datenbank
sqlite3 Datenbankdatei.db
1. Selektion von Spalten
Die einfachste SQL-Abfrage ist die Selektion von Spalten aus einer Tabelle. Hier ist die Syntax:
SELECT Spalte1, Spalte2, ...
FROM Tabelle;
Ersetze "Spalte1, Spalte2, ..." durch die Namen der Spalten, die du auswählen möchtest, und "Tabelle" durch den Namen der Tabelle, aus der du die Daten abrufen möchtest.
Beispiel:
SELECT Name, Preis
FROM Eissorten;
Dies gibt den Namen und den Preis aller Eissorten aus der Tabelle "Eissorten" zurück.
2. Bedingte Selektion mit WHERE-Klausel
Du kannst die Ergebnisse weiter einschränken, indem du eine WHERE-Klausel verwendest, um eine Bedingung anzugeben. Hier ist die Syntax:
SELECT Spalte1, Spalte2, ...
FROM Tabelle
WHERE Bedingung;
Ersetze "Bedingung" durch eine logische Bedingung, die die gewünschten Datensätze filtert.
Beispiel:
SELECT Name, Preis
FROM Eissorten
WHERE Preis < 3.0;
Dies gibt den Namen und den Preis aller Eissorten aus der Tabelle "Eissorten" zurück, bei denen der Preis kleiner als 3.0 ist.
3. Projektion mit DISTINCT
Die Projektion wird verwendet, um eindeutige Werte aus einer Spalte auszuwählen. Verwende das DISTINCT-Schlüsselwort, um doppelte Werte zu entfernen. Hier ist die Syntax:
SELECT DISTINCT Spalte
FROM Tabelle;
Ersetze "Spalte" durch den Namen der Spalte, aus der du eindeutige Werte auswählen möchtest.
Beispiel:
SELECT DISTINCT Adresse
FROM Kunden;
Dies gibt eine Liste eindeutiger Adressen aus der Tabelle "Kunden" zurück.
4. Sortierung mit ORDER BY
Die ORDER BY-Klausel wird verwendet, um die Ergebnisse nach einer oder mehreren Spalten zu sortieren. Verwende ASC für aufsteigende Reihenfolge und DESC für absteigende Reihenfolge. Hier ist die Syntax:
SELECT Spalte1, Spalte2, ...
FROM Tabelle
ORDER BY Spalte ASC|DESC;
Ersetze "Spalte" durch den Namen der Spalte,
nach der du sortieren möchtest, und "ASC" oder "DESC" entsprechend der gewünschten Sortierreihenfolge.
Beispiel:
SELECT Name, Preis
FROM Eissorten
ORDER BY Preis DESC;
Dies gibt den Namen und den Preis aller Eissorten aus der Tabelle "Eissorten" zurück, sortiert nach absteigendem Preis.
5. Verknüpfung von Tabellen mit Joins
Joins werden verwendet, um Daten aus mehreren Tabellen zu kombinieren. Die gängigsten Arten von Joins sind INNER JOIN, LEFT JOIN und RIGHT JOIN. Hier ist die Syntax:
SELECT Spalte1, Spalte2, ...
FROM Tabelle1
JOIN Tabelle2 ON Bedingung;
Ersetze "Tabelle1" und "Tabelle2" durch die Namen der Tabellen, die du verknüpfen möchtest, und "Bedingung" durch die Verknüpfungsbedingung.
Beispiel (INNER JOIN):
SELECT Bestellungen.BestellID, Kunden.Vorname, Kunden.Nachname
FROM Bestellungen
JOIN Kunden ON Bestellungen.KundenID = Kunden.KundenID;
Dies gibt die Bestellungs-ID, den Vornamen und den Nachnamen für alle Bestellungen zurück und verknüpft die Tabelle "Bestellungen" mit der Tabelle "Kunden" basierend auf der Kunden-ID.
Das war eine Einführung in grundlegende SQL-Abfragen von einfachen Selektionen und Projektionen bis hin zu Joins. Du kannst dieses Tutorial als Ausgangspunkt verwenden und weitere fortgeschrittene SQL-Konzepte erkunden. Viel Spaß beim Arbeiten mit SQL!
Komplexere Abfragen mit Joins
-
Abfrage: "Zeige den Namen der Eissorte und die Anzahl der Bestellungen für jede Eissorte an, sortiert nach der Anzahl der Bestellungen absteigend." SQL-Statement:
SELECT Eissorten.Name, COUNT(Bestellungen.SortenID) AS AnzahlBestellungen FROM Eissorten LEFT JOIN Bestellungen ON Eissorten.SortenID = Bestellungen.SortenID GROUP BY Eissorten.SortenID ORDER BY AnzahlBestellungen DESC;
Musterlösung:
Name AnzahlBestellungen Schokolade 2 Erdbeere 1 Vanille 0 -
Abfrage: "Zeige den Namen der Kunden und die Anzahl der Bestellungen für jeden Kunden an, nur für Kunden mit mindestens einer Bestellung." SQL-Statement:
SELECT Kunden.Vorname, Kunden.Nachname, COUNT(Bestellungen.KundenID) AS AnzahlBestellungen FROM Kunden LEFT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID WHERE Bestellungen.KundenID IS NOT NULL GROUP BY Kunden.KundenID;
Musterlösung:
Vorname Nachname AnzahlBestellungen Max Mustermann 1 Maria Musterfrau 1 Hans Beispiel 1 -
Abfrage: "Zeige den Namen der Eissorte und den Durchschnittspreis für Eissorten, deren Durchschnittspreis über 2.0 liegt." SQL-Statement:
SELECT Eissorten.Name, AVG(Eissorten.Preis) AS Durchschnittspreis FROM Eissorten GROUP BY Eissorten.SortenID HAVING AVG(Eissorten.Preis) > 2.0;
Musterlösung:
Name Durchschnittspreis Schokolade 2.5 Erdbeere 3.0 -
Abfrage: "Zeige den Namen der Kunden und die Anzahl der Bestellungen für Kunden, die mindestens 2 Bestellungen getätigt haben." SQL-Statement:
SELECT Kunden.Vorname, Kunden.Nachname, COUNT(Bestellungen.KundenID) AS AnzahlBestellungen FROM Kunden LEFT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID GROUP BY Kunden.KundenID HAVING COUNT(Bestellungen.KundenID) >= 2;
Musterlösung:
Vorname Nachname AnzahlBestellungen Max Mustermann 2 -
Abfrage: "Zeige den Namen der Eissorte und den Namen der Eisdiele, in der sie verkauft wird, für alle Eissorten." SQL-Statement:
SELECT Eissorten.Name, Eisdielen.Name AS Eisdiele FROM Eissorten LEFT JOIN Verkaufsstellen ON Eissorten.SortenID = Verkaufsstellen.SortenID LEFT JOIN Eisdielen ON Verkaufsstellen.EisdielenID = Eisdielen.EisdielenID;
Musterlösung:
Name Eisdiele Schokolade Eisparadies Vanille Eiszauber Erdbeere Eisparadies
Das waren einige Beispiele für komplexere SQL-Abfragen. Du kannst die Musterlösungen als Referenz verwenden, um die Ergebnisse zu vergleichen und deine SQL-Fähigkeiten weiter auszubauen. Viel Erfolg beim Ausprobieren!
Die Eisverkaufdatenbank kann hier heruntergeladen werden.
public/datenbanken/eisverkaufdb.sqLite https://abitur-2024.edugit.io/begleitmaterial/datenbanken/eisverkaufdb.sqLite