Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
faecher:informatik:oberstufe:datenbanken:sql_abfrage:start [04.11.2020 19:28] – [Datenbankimport] sbel | faecher:informatik:oberstufe:datenbanken:sql_abfrage:start [13.01.2022 08:29] – [Beispiele] sbel | ||
---|---|---|---|
Zeile 11: | Zeile 11: | ||
<box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
- | * Öffne mit deinem Browser das phpmyadmin Interface: http://db.q-gym.de/ | + | * Öffne mit deinem Browser das phpmyadmin Interface: http://sql.q-gym.de/ |
* Infos zu Benutzern und Passwort bekommst du im Unterricht. | * Infos zu Benutzern und Passwort bekommst du im Unterricht. | ||
</ | </ | ||
===== Datenbankimport ===== | ===== Datenbankimport ===== | ||
- | |||
- | Wir arbeiten zunächst mit einer Beispieldatenbank, | ||
<box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
- | * Lade die Datei {{ .:adressen_beispiel.sql.zip |}}auf deinen Computer herunter. | + | * Lade die Datei {{ .:adressen.sql.zip |}} auf deinen Computer herunter. |
* 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**, | ||
</ | </ | ||
Du erhältst eine Tabelle: '' | Du erhältst eine Tabelle: '' | ||
+ | |||
+ | Klicke die Tabelle an und mache dich mit den gespeicherten Daten etwas vertraut. | ||
===== Aufbau einer SQL Abfrage ===== | ===== Aufbau einer SQL Abfrage ===== | ||
Zeile 31: | Zeile 31: | ||
Eine Klausel für SQL-Abfragen ist im Wesentlichen folgendermaßen aufgebaut: | Eine Klausel für SQL-Abfragen ist im Wesentlichen folgendermaßen aufgebaut: | ||
+ | <code sql> | ||
SELECT [DISTINCT] { spalten | * } | SELECT [DISTINCT] { spalten | * } | ||
FROM tabelle [alias] [,tabelle [alias]] ... | FROM tabelle [alias] [,tabelle [alias]] ... | ||
Zeile 37: | Zeile 37: | ||
[GROUP BY spalten [HAVING {bedingung}]] | [GROUP BY spalten [HAVING {bedingung}]] | ||
[ORDER BY spalten [ASC | DESC]]; | [ORDER BY spalten [ASC | DESC]]; | ||
- | | + | </ |
Argumente in eckigen Klammern sind dabei optional, die Schreibweise '' | Argumente in eckigen Klammern sind dabei optional, die Schreibweise '' | ||
==== 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 53: | Zeile 53: | ||
Die SQL-Abfrage | Die SQL-Abfrage | ||
- | + | <code sql> | |
- | SELECT * FROM artikel | + | SELECT * FROM adressen |
- | + | </ | |
- | liefert | + | liefert |
Die Abfrage | Die Abfrage | ||
<code sql> | <code sql> | ||
- | SELECT * FROM artikel | + | SELECT * FROM adressen |
</ | </ | ||
- | Ermittelt | + | Ermittelt |
<box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe: | ||
Führe die beiden Beispielabfragen auf deiner Datenbank aus. | Führe die beiden Beispielabfragen auf deiner Datenbank aus. | ||
</ | </ | ||
- | ==== Übung 1 ==== | ||
- | Arbeite mit der {{.:sql_befehle_a.pdf|Befehlsübersicht A}} in der Tabelle '' | + | ---- |
+ | {{:aufgabe.png? | ||
+ | === (A1) === | ||
+ | Arbeite mit der {{.: | ||
+ | - Alle Name, Vorname und Wohnort aller Datensätze. | ||
+ | - Die Vor- und Nachnamen aller gespeicherten Adressen. | ||
+ | - Alle Postleitzahlen und Orte, deren PLZ größer oder gleich 80000 ist. | ||
+ | - Vor- und Nachname aller Personen, die im Postleitzahlbereich 4xxxx bis 6xxxx wohnen. | ||
+ | - Alle Datensätze, | ||
+ | - Alle Personen, die mit " | ||
+ | - Alle Einträge die neuer als 10 Jahre sind. | ||
+ | - Alle Personen, die in einer Stadt wohnen, die ein " | ||
+ | - Alle Einträge mit Vornamen, die mit " | ||
+ | - Alle Personen mit einem Faxgerät und einem Mobiltelefon, | ||
+ | - Alle Personen, die jünger als 45 Jahre sind, in einem Ort wohnen der mit " | ||
- | | + | ---- |
- | | + | {{:aufgabe.png? |
- | | + | === (A2) === |
- | - Artikelnummer, | + | |
- | - Alle Bücher, in denen es um CSS geht | + | |
- | - Alle Informationen zum Buch mit den Cover-Bild '' | + | |
- | - Alle Informationen zu allen Büchern, die weniger als 15EUR kosten | + | |
+ | Denke dir mindestens 10 weitere Kriterien für die Filterung von Adressen aus, notiere diese und erstelle eine passende SQL Abfrage. | ||
- | Arbeite jetzt mit {{.: | + | ---- |
+ | {{: | ||
+ | === (A3) === | ||
+ | Arbeite jetzt mit {{.: | ||
Man kann mit den Werten, die von einer '' | Man kann mit den Werten, die von einer '' | ||
Zeile 90: | Zeile 103: | ||
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 | + | - 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 |
- | - Gib die verschiedenen Preiskategorien | + | - Alle Postleitzahlen in der Datenbank |
- | - Gib Titel und Preis mit Mehrwertsteuer | + | - Alle Geburtsdaten, die in der Datenbank vorkommen, ohne die Datensätze, |
+ | - Den Datensatz | ||
+ | - Die durchschnittliche Zahl der Bonuspunkte aller Personen | ||
+ | - Die durchschnittliche Zahl der offenen Rechungen aller Personen, die jünger als 35 Jahre sind und nicht am Bonusprogramm teilnehmen. | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A4) === | ||
+ | |||
+ | Überlege dir 5 weitere verschachtelte Abfragen | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (Bonus) === | ||
+ | |||
+ | Möglicherweise ist hier eine kleine Recherche von nöten. | ||
+ | |||
+ | - Eine Liste aller Mailprovider | ||
+ | - Eine Liste aller Vorwahlen | ||
+ | |||
+ | |||
+ | ==== Material ==== | ||
+ | |||
+ | {{simplefilelist>: | ||