Aufgabe 12 - SQL DML (INSERT, SELECT, UPDATE, DELETE)
Aufgabe 12 - SQL DML (INSERT, SELECT, UPDATE, DELETE)
Abschnitt betitelt „Aufgabe 12 - SQL DML (INSERT, SELECT, UPDATE, DELETE)“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung arbeiten Sie mit den vier zentralen DML-Befehlen INSERT, SELECT, UPDATE und DELETE an einem Buchkatalog (siehe Kapitel 5 - SQL-Grundlagen und Kapitel 6 - SQL DML-Funktionen). Sie fügen Daten ein, fragen sie gefiltert ab, ändern und löschen sie gezielt.
In dieser Übung üben Sie:
- Anlegen: zwei Tabellen mit
CREATE TABLEinkl. grundlegender Constraints erstellen. - Einfügen: Daten mit
INSERT INTOeinzeln und mehrfach hinzufügen. - Abfragen: Daten mit
SELECTlesen und filtern (WHERE,AND/OR/NOT,LIKE,IN, Vergleichsoperatoren). - Ändern: Daten mit
UPDATE(einzelne/mehrere Zeilen, mehrere Spalten) anpassen. - Löschen: Daten mit
DELETEgezielt überWHEREentfernen und das Risiko eines fehlendenWHEREverstehen. - Erkennen: typische Constraint-Fehler (
UNIQUE,CHECK,FOREIGN KEY) deuten.
Benötigte Unterlagen
Abschnitt betitelt „Benötigte Unterlagen“- SQL-Editor (z. B. psql, pgAdmin, DBeaver oder VSCode mit SQL-Plugin),
- Zugriff auf eine PostgreSQL-Instanz,
- eine Datei
aufgabe12.sql, in der alle Befehle in sinnvoller Reihenfolge gesammelt werden.
Szenario: Buchkatalog
Abschnitt betitelt „Szenario: Buchkatalog“Eine kleine Buchhandlung verwaltet Autorinnen/Autoren und Bücher in einer Datenbank.
- Tabelle
authorspeichert Autorendaten. - Tabelle
bookspeichert Bücher.
Tabellen
Abschnitt betitelt „Tabellen“Erstellen Sie diese Tabellen in PostgreSQL mit den folgenden Strukturen:
CREATE TABLE author ( author_id SERIAL PRIMARY KEY, pen_name VARCHAR(80) NOT NULL, email VARCHAR(120) NOT NULL UNIQUE, country VARCHAR(60), birth_year INTEGER CHECK (birth_year BETWEEN 1900 AND 2020));
CREATE TABLE book ( book_id SERIAL PRIMARY KEY, author_id INTEGER NOT NULL REFERENCES author(author_id), title VARCHAR(160) NOT NULL, isbn VARCHAR(20) NOT NULL UNIQUE, published_date DATE, price NUMERIC(6,2) NOT NULL CHECK (price >= 0), genre VARCHAR(40));Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Teil A - Testdaten einfügen
Abschnitt betitelt „Teil A - Testdaten einfügen“-
Testdaten einfügen (Autoren)
- Fügen Sie mindestens 3 Autorinnen/Autoren ein.
- Mindestens ein
INSERTsoll mehrere Zeilen auf einmal einfügen. - Geben Sie anschließend mit
SELECTalle Autorinnen/Autoren mitauthor_idaus, um die Einfügungen zu kontrollieren.
-
Testdaten einfügen (Bücher)
- Fügen Sie mindestens 5 Bücher ein.
- Fügen Sie mindestens ein Buch mit dem Genre
'Education'und eines mit dem Genre'Non-Fiction'ein. - Fügen Sie ein Buch mit der isbn
'978-0-00-000003-5'ein. - Verwenden Sie beim Einfügen für
author_idaus der Tabelleauthor.
-
Daten kontrollieren
- Prüfen Sie mit
SELECT, ob alle Daten korrekt eingefügt wurden.
- Prüfen Sie mit
-
Constraint-Tests (absichtlich fehlerhaft)
Führen Sie mindestens drei der folgenden Tests durch und dokumentieren Sie den Fehler (Fehlermeldung / kurze Beschreibung):
UNIQUE: Versuch, einen zweiten Autor mit bereits verwendeteremaileinzufügen.UNIQUE: Versuch, ein zweites Buch mit derselbenisbneinzufügen.CHECK: Versuch, ein Buch mitprice = -5einzufügen.FOREIGN KEY: Versuch, ein Buch mit einer nicht existierendenauthor_ideinzufügen (z. B.9999).
Teil B - Daten lesen (SELECT)
Abschnitt betitelt „Teil B - Daten lesen (SELECT)“Schreiben Sie jeweils eine SQL-Abfrage für die folgenden Anforderungen:
-
Alle Bücher anzeigen (alle Spalten).
-
Nur Titel und Preis aller Bücher anzeigen.
-
Alle Bücher mit
price > 20anzeigen. -
Alle Bücher, deren
genreentweder'Education'oder'Non-Fiction'ist (verwenden SieIN). -
Alle Autorinnen/Autoren, deren
pen_namemitAbeginnt (verwenden SieLIKE). -
Alle Bücher, die nach dem
2022-12-31erschienen sind undgenre <> 'Thriller'ist.
Teil C - Daten ändern (UPDATE)
Abschnitt betitelt „Teil C - Daten ändern (UPDATE)“- Preis eines bestimmten Buchs ändern
- Ändern Sie den Preis des Buchs mit der
isbn = '978-0-00-000003-5'auf16.90.
- Mehrere Spalten in einer Zeile ändern
- Ändern Sie bei einer Autorin / einem Autor Ihrer Wahl
countryundemailin einem einzigenUPDATE.
- Mehrere Zeilen ändern
- Erhöhen Sie den Preis aller Bücher im Genre
'Education'um2.00.
- NULL setzen
- Setzen Sie bei einem Buch Ihrer Wahl
published_dateaufNULL.
Dokumentieren Sie nach jedem Update mit einem passenden
SELECT, ob die Änderung korrekt ist.
Teil D - Daten löschen (DELETE)
Abschnitt betitelt „Teil D - Daten löschen (DELETE)“- Ein Buch löschen
- Löschen Sie ein Buch Ihrer Wahl über die
isbn.
- Mehrere Bücher löschen
- Löschen Sie alle Bücher mit
price < 13.00.
- FOREIGN KEY-Verhalten beobachten
- Versuchen Sie, eine Autorin / einen Autor zu löschen, die/der noch Bücher in
bookhat. - Dokumentieren Sie, was passiert.
- Löschen Sie anschließend zuerst die zugehörigen Bücher und danach die Autorin / den Autor.
- Geben Sie eine SQL-Datei
aufgabe12.sqlab. - Die Datei enthält:
- das komplette
CREATE TABLE-Schema, - alle
INSERT/SELECT/UPDATE/DELETE-Statements in sinnvoller Reihenfolge, - kurze Kommentare zu den Constraint-Tests.
- das komplette
Qualitätskriterien
Abschnitt betitelt „Qualitätskriterien“- Alle Statements sind lauffähig und reproduzierbar.
SELECT-Abfragen beantworten die Aufgaben exakt.- Änderungen und Löschungen sind gezielt (konsequente Verwendung von
WHERE). - Constraint-Tests sind nachvollziehbar dokumentiert.
Wissens-Check
Abschnitt betitelt „Wissens-Check“- Frage 1: Warum ist ein
DELETEoderUPDATEohneWHERE-Klausel gefährlich? - Frage 2: Was passiert beim Versuch, ein Buch mit einer nicht existierenden
author_ideinzufügen, und welcher Constraint greift? - Frage 3: Worin unterscheiden sich die Operatoren
INundLIKEin einerWHERE-Klausel?
HTL Villach, Schuljahr 2025-2026,
https://www.htl-villach.at