Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:sql_abfrage:start [04.11.2020 19:35] – [Beispiele] sbel | faecher:informatik:oberstufe:datenbanken:sql_abfrage:start [24.11.2024 16:40] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
===== Einstieg ===== | ===== Einstieg ===== | ||
- | Die Structured Query Language (SQL) ist eine standardisierte Datenbanksprache zur Nutzung auf relationalen Datenbanksystemen wie MySQL. Mit SQL können Abfragen, Manipulationen und Änderungen auf bzw. an den Tabellen der Datenbank vorgenommen werden. | + | Die Structured Query Language (SQL) ist eine standardisierte Datenbanksprache zur Nutzung auf relationalen Datenbanksystemen wie MySQL oder MariaDB. Mit SQL können Abfragen, Manipulationen und Änderungen auf bzw. an den Tabellen der Datenbank vorgenommen werden. |
- | ===== Anmelden am Webinterface | + | ===== Datenbankzugriff |
- | Wir haben ein zentrales DBMS zur Benutzung durch die Schülerinnen | + | Um die folgenden Übungen zu bearbeiten, benötigt man Zugriff auf die als Vorlage |
- | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | + | Für Schülerinnen die Zugriff auf das DMBS von info-bw.de oder dem KMG Friedrichshaben haben, gehts hier zu den Anmeldeseiten von phpMyadmin, alle anderen folgen bitte den Anweisung ihrer Lehrerinnen. |
- | * Öffne mit deinem Browser | + | |
- | * Infos zu Benutzern und Passwort bekommst du im Unterricht. | + | |
- | </ | + | |
+ | < | ||
+ | * [[# | ||
+ | * [[#kmg|KMG Friedrichshafen]] | ||
+ | <pane id=" | ||
+ | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
+ | * Öffne mit deinem Browser das phpmyadmin Interface: https:// | ||
+ | * Infos zu Benutzern und Passwort bekommst du im Unterricht. | ||
+ | </ | ||
+ | </ | ||
+ | <pane id=" | ||
+ | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
+ | * Öffne mit deinem Browser das phpmyadmin Interface: https:// | ||
+ | * Infos zu Benutzern und Passwort bekommst du im Unterricht/ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
===== Datenbankimport ===== | ===== Datenbankimport ===== | ||
+ | < | ||
+ | * [[# | ||
+ | * [[# | ||
+ | <pane id=" | ||
<box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
* Lade die Datei {{ .: | * Lade die Datei {{ .: | ||
* Importiere die Datei in deine Datenbank. Du musst dabei darauf achten, dass du **in der linken Spalte zuerst deine Datenbank auswählst**, | * Importiere die Datei in deine Datenbank. Du musst dabei darauf achten, dass du **in der linken Spalte zuerst deine Datenbank auswählst**, | ||
</ | </ | ||
+ | </ | ||
+ | <pane id=" | ||
+ | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
+ | Lade die {{ : | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
- | Du erhältst | + | Die Datenbank enthält jetzt eine Tabelle '' |
- | Klicke | + | Betrachte |
===== Aufbau einer SQL Abfrage ===== | ===== Aufbau einer SQL Abfrage ===== | ||
Zeile 41: | Zeile 64: | ||
==== Ausführungsreihenfolge ==== | ==== Ausführungsreihenfolge ==== | ||
+ | |||
+ | SELECT (Spaltenauswahl bzw. Projektion) | ||
FROM (Tabellenauswahl) | FROM (Tabellenauswahl) | ||
-> WHERE (Zeilenauswahl bzw. Selektion) | -> WHERE (Zeilenauswahl bzw. Selektion) | ||
-> GROUP BY (Gruppierung) | -> GROUP BY (Gruppierung) | ||
-> HAVING (Gruppenauswahl) | -> HAVING (Gruppenauswahl) | ||
- | -> SELECT (Spaltenauswahl bzw. Projektion) | ||
-> ORDER BY (Sortierung) | -> ORDER BY (Sortierung) | ||
| | ||
Zeile 60: | Zeile 83: | ||
Die Abfrage | Die Abfrage | ||
<code sql> | <code sql> | ||
- | SELECT * FROM artikel | + | SELECT * FROM adressen |
</ | </ | ||
Zeile 68: | Zeile 91: | ||
Führe die beiden Beispielabfragen auf deiner Datenbank aus. | Führe die beiden Beispielabfragen auf deiner Datenbank aus. | ||
</ | </ | ||
+ | |||
+ | ===== Fehlerprotokoll ===== | ||
+ | |||
+ | Du wirst zu Beginn ziemlich sicher zahlreiche falsche Eingaben machen, die zu Fehlern führen, die nicht immer direkt verständlich sind. Um etwas Struktur in deine persönlichen Fehler zu bringen, solltest du ein Fehlerprotokoll führen, so dass du erkennen kannst, wenn du ähnliche Fehler immer wieder machst. | ||
+ | |||
+ | Du kannst die folgende Datei verwenden, um die Fehler direkt hinein zu kopieren und zu vermerken, wie du sie lösen kannst. Alternativ kannst du aber natürlich auch dein Notizprogramm verwenden. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
---- | ---- | ||
Zeile 75: | Zeile 108: | ||
Arbeite mit der {{.: | Arbeite mit der {{.: | ||
- | - Alle Datensätze mit Name, Vorname und Wohnort. | + | - Alle Name, Vorname und Wohnort |
- | - Die Vor- und Nachnamen aller gespeicherten Adressen. | + | - Die Vor- und Nachnamen aller Einträge. |
- Alle Postleitzahlen und Orte, deren PLZ größer oder gleich 80000 ist. | - Alle Postleitzahlen und Orte, deren PLZ größer oder gleich 80000 ist. | ||
- Vor- und Nachname aller Personen, die im Postleitzahlbereich 4xxxx bis 6xxxx wohnen. | - Vor- und Nachname aller Personen, die im Postleitzahlbereich 4xxxx bis 6xxxx wohnen. | ||
Zeile 86: | Zeile 119: | ||
- Alle Personen mit einem Faxgerät und einem Mobiltelefon, | - Alle Personen mit einem Faxgerät und einem Mobiltelefon, | ||
- Alle Personen, die jünger als 45 Jahre sind, in einem Ort wohnen der mit " | - Alle Personen, die jünger als 45 Jahre sind, in einem Ort wohnen der mit " | ||
+ | |||
+ | [[.loesungen|Lösungen]] | ||
+ | |||
---- | ---- | ||
Zeile 91: | Zeile 127: | ||
=== (A2) === | === (A2) === | ||
- | Denke dir mindestens | + | Denke dir mindestens |
---- | ---- | ||
{{: | {{: | ||
=== (A3) === | === (A3) === | ||
- | Arbeite jetzt mit {{.: | + | Arbeite jetzt mit {{.: |
Man kann mit den Werten, die von einer '' | Man kann mit den Werten, die von einer '' | ||
Zeile 103: | Zeile 139: | ||
Filtere mit einer geeigneten SQL-Abfrage die folgenden Informationen aus der Tabelle heraus. | Filtere mit einer geeigneten SQL-Abfrage die folgenden Informationen aus der Tabelle heraus. | ||
- | - Artikel mit Artikelnummer, Namen und Preis aus, aufsteigend sortiert nach Artikelnummer. | + | - Alle Personen, die mehr als 15 offene Rechnungen haben. |
- | - Alle Artikel mit Nummer, Name, altem Preis und neuem Preis aus, wobei der neue Preis dem um eins erhöhten alten Preis entspricht. | + | - Die Anzahl der Personen, die mehr als 10 offene Rechnungen haben. |
- | - Gib die Tabelle aus, die alle verschiedenen Preise | + | - Die Anzahl der Personen, die mehr als 19 offene Rechnungen haben und kein Guthaben auf ihrem Konto. |
- | - Gib die Tabelle mit dem Namen der Artikel aus, deren Preis genau 1,00 Euro beträgt | + | - Alle Vornamen, Nachnamen, Wohnorte |
- | - Gib die verschiedenen Preiskategorien der Artikel | + | - Alle Postleitzahlen in der Datenbank |
- | - Gib Titel und Preis mit Mehrwertsteuer | + | - Alle Geburtsdaten, |
+ | - Den höchsten Kontostand | ||
+ | - Die durchschnittliche Zahl der Bonuspunkte aller Personen aus Aachen die am Bonusprogramm teilnehmen. | ||
+ | - Die durchschnittliche Zahl der offenen Rechnungen aller Personen, die jünger als 35 Jahre sind und nicht am Bonusprogramm teilnehmen. | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A4) === | ||
+ | |||
+ | Überlege dir 5 weitere verschachtelte Abfragen mit mehreren Kriterien, welche | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (Bonus) === | ||
+ | |||
+ | Möglicherweise ist hier eine kleine Recherche von nöten. | ||
+ | |||
+ | - Eine Liste aller Mailprovider | ||
+ | - Eine Liste aller Vorwahlen | ||
+ | |||
+ | ++++ Lösungshinweis I | | ||
+ | Man muss den Inhalt einer Tabellenzelle aufteilen. Das geht zum Beispiel | ||
+ | https:// | ||
+ | |||
+ | <WRAP center round box 90%> | ||
+ | **Hinweis**: | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | ++++ Lösungshinweis II | | ||
+ | |||
+ | Für die Maildomains sieht de Lösung so aus: | ||
+ | <code sql> | ||
+ | SELECT DISTINCT SUBSTRING_INDEX(EMail, | ||
+ | </ | ||
+ | |||
+ | Die Lösung für die Vorwahlen kannst du sicher selbst finden. | ||
+ | ++++ | ||
+ | ==== Material ==== | ||
+ | |||
+ | {{simplefilelist>: | ||