Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m290_guko:learningunits:lu07:theorie:a_crud [2025/09/23 22:23] – gkoch | modul:m290_guko:learningunits:lu07:theorie:a_crud [2025/09/28 13:54] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== LU07a – CRUD: Die Basics der Datenverwaltung ====== | ====== LU07a – CRUD: Die Basics der Datenverwaltung ====== | ||
| - | **CRUD** | + | **CRUD** |
| - | CRUD ist überall: in Web-Apps, REST-APIs, Admin-Backends, | + | Diese vier Operationen |
| - | {{:modul: | + | Stellen Sie sich CRUD wie einen Werkzeugkasten vor, mit dem Sie immer wieder die gleichen Tätigkeiten machen: |
| + | * **Create** – etwas Neues __hinzufügen__ | ||
| + | * **Read** – vorhandene Daten __abrufen__ | ||
| + | * **Update** – bestehende Daten __ändern__ | ||
| + | * **Delete** – Daten __löschen__ | ||
| - | ===== Lernziele ===== | + | {{: |
| - | * Ich kann **CRUD** in eigenen Worten erklären. | + | // |
| - | * Ich kann CRUD-Operationen zu **REST-API** und **SQL** zuordnen. | + | |
| - | * Ich verstehe, warum CRUD als **Skript** | + | |
| ===== CRUD in der Praxis ===== | ===== CRUD in der Praxis ===== | ||
| - | ^ CRUD | Web/REST (typisch) | SQL (typisch) | | ||
| - | | **Create** | ||
| - | | **Read** | ||
| - | | **Update** | ||
| - | | **Delete** | ||
| - | Warum das wichtig ist: | + | CRUD begegnet Ihnen nicht nur in der Datenbank, sondern überall in der Informatik. |
| - | * **Gleiche Denkweise** in Backend & DB: REST-Calls lösen am Ende CRUD in der DB aus. | + | Beispiel: Ein Social-Media-Post |
| - | * **Reproduzierbar & versionierbar**: SQL-Skripte in Git (Migrationen/ | + | |
| - | * **Schnell & sauber**: Grosse Datenmengen/korrekte Datentypen sind per Skript sicherer als CSV-Importe per GUI. | + | * **Create** → Sie schreiben einen neuen Post → er wird in der Datenbank gespeichert. |
| + | * **Read** → Andere Nutzer:innen sehen Ihren Post → die App liest die Daten aus der Datenbank. | ||
| + | * **Update** → Sie ändern den Text oder fügen ein Bild hinzu → die Daten in der Datenbank werden angepasst. | ||
| + | * **Delete** → Sie löschen den Post → der Eintrag wird aus der Datenbank entfernt. | ||
| + | |||
| + | In der Praxis stossen Sie als Mediamatiker: | ||
| + | |||
| + | ==== 1. In SQL-Skripten ==== | ||
| + | Ein SQL-Skript ist eine einfache | ||
| + | Damit lassen sich Datenbanken | ||
| + | |||
| + | Typische Fälle: | ||
| + | * WordPress: Daten **migrieren**((SQL-Skripte, die eine Datenbank-Struktur oder -Inhalte anpassen, z. B. beim Umzug auf ein neues Hosting.)), | ||
| + | * Daten **importieren/ | ||
| + | * **Wartungsarbeiten**((Geplante Arbeiten an einer Datenbank, z. B. alte Daten löschen oder neue hinzufügen)). | ||
| + | |||
| + | Beispiel: Statt 100 Produkte von Hand ins Backend einzutragen, | ||
| + | |||
| + | ==== 2. Über die Backend-Logik ==== | ||
| + | Moderne Webapplikationen (WordPress, Webshops, Social Media) kommunizieren mit der Datenbank über **REST-Calls**((Ein Aufruf von einem Programm (z. B. einer Website oder App) an ein Backend. Dabei wird ein HTTP-Befehl wie GET, POST, PUT oder DELETE verwendet, um Daten von einer Datenbank abzufragen oder zu verändern.)) und **APIs**((„Application Programming Interfaces“ | ||
| + | Wenn Sie im Frontend einen Button klicken („Post erstellen“, | ||
| + | |||
| + | ===== CRUD und SQL ===== | ||
| + | |||
| + | In diesem Kapitel lernen Sie die sogenannten **DML-Befehle** (Data Manipulation Language). | ||
| + | Mit DML-Befehlen setzen Sie CRUD direkt in SQL um: | ||
| + | |||
| + | ^ CRUD | SQL-Befehl (typisch) | | ||
| + | | **Create** | <code sql> | ||
| + | | **Read** | ||
| + | | **Update** | ||
| + | | **Delete** | ||
| ===== Beispiele (Film-DB) ===== | ===== Beispiele (Film-DB) ===== | ||
| * **Create**: einen Film __hinzufügen__ | * **Create**: einen Film __hinzufügen__ | ||
| - | <WRAP center box 80%>< | + | <WRAP center box 80% round>< |
| INSERT INTO imdb_top_1000 (Series_Title, | INSERT INTO imdb_top_1000 (Series_Title, | ||
| VALUES (' | VALUES (' | ||
| Zeile 31: | Zeile 59: | ||
| * **Read**: Filme ab 2010 mit Top-Bewertung __auslesen__ | * **Read**: Filme ab 2010 mit Top-Bewertung __auslesen__ | ||
| - | <WRAP center box 80%>< | + | <WRAP center box 80% round>< |
| SELECT Series_Title, | SELECT Series_Title, | ||
| FROM imdb_top_1000 | FROM imdb_top_1000 | ||
| Zeile 39: | Zeile 67: | ||
| * **Update**: Genre __aktualisieren__ | * **Update**: Genre __aktualisieren__ | ||
| - | <WRAP center box 80%>< | + | <WRAP center box 80% round>< |
| UPDATE imdb_top_1000 | UPDATE imdb_top_1000 | ||
| SET Genre = ' | SET Genre = ' | ||
| Zeile 46: | Zeile 74: | ||
| * **Delete**: Tuple (Datensatz) __entfernen__ | * **Delete**: Tuple (Datensatz) __entfernen__ | ||
| - | <WRAP center box 80%>< | + | <WRAP center box 80% round>< |
| DELETE FROM imdb_top_1000 | DELETE FROM imdb_top_1000 | ||
| WHERE Series_Title = 'Dummy Movie' AND Released_Year = 1900; | WHERE Series_Title = 'Dummy Movie' AND Released_Year = 1900; | ||
| </ | </ | ||
| - | ===== Merksatz ===== | ||
| - | **CRUD ist das „Alphabet“ der Datenarbeit.** Egal ob API-Call oder SQL-Skript – am Ende passieren Create/ | ||