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 [05.11.2020 11:31] – [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 |
---- | ---- | ||
Zeile 106: | Zeile 142: | ||
- Die Anzahl der Personen, die mehr als 10 offene Rechnungen haben. | - Die Anzahl der Personen, die mehr als 10 offene Rechnungen haben. | ||
- Die Anzahl der Personen, die mehr als 19 offene Rechnungen haben und kein Guthaben auf ihrem Konto. | - Die Anzahl der Personen, die mehr als 19 offene Rechnungen haben und kein Guthaben auf ihrem Konto. | ||
- | - Alle Vornamen, Nachnamen,, Wohnorte und Kontostände bei denen der Kontostand mehr als 50EUR beträgt, aufsteigend Sortiert nach dem Kontostand und nach dem Nachnamen | + | - Alle Vornamen, Nachnamen, Wohnorte und Kontostände bei denen der Kontostand mehr als 50EUR beträgt, aufsteigend Sortiert nach dem Kontostand und nach dem Nachnamen |
- Alle Postleitzahlen in der Datenbank | - Alle Postleitzahlen in der Datenbank | ||
- Alle Geburtsdaten, | - Alle Geburtsdaten, | ||
- | - Den Datensatz mit dem höchsten Kontostand | + | - Den höchsten Kontostand |
- | - Die durchschnittliche Zahl der Bonuspunkte aller Personen aus Aachen die am Bonusproramm | + | - Die durchschnittliche Zahl der Bonuspunkte aller Personen aus Aachen die am Bonusprogramm |
- | - Die durchschnittliche Zahl der offenen | + | - Die durchschnittliche Zahl der offenen |
---- | ---- | ||
Zeile 128: | Zeile 164: | ||
- Eine Liste aller Vorwahlen | - Eine Liste aller Vorwahlen | ||
+ | ++++ Lösungshinweis I | | ||
+ | Man muss den Inhalt einer Tabellenzelle aufteilen. Das geht zum Beispiel mit SELECT SUBSTRING_INDEX, | ||
+ | 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 ==== | ==== Material ==== | ||