faecher:informatik:oberstufe:datenbanken:sql_abfrage:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:datenbanken:sql_abfrage:start [04.11.2020 20:34] – [Übung 1] sbelfaecher:informatik:oberstufe:datenbanken:sql_abfrage:start [16.01.2024 11:42] (aktuell) – [Beispiele] Frank Schiebel
Zeile 10: Zeile 10:
 Wir haben ein zentrales DBMS zur Benutzung durch die Schülerinnen und Schüler eingerichtet: Wir haben ein zentrales DBMS zur Benutzung durch die Schülerinnen und Schüler eingerichtet:
  
-<box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe:** Anmeldung an mysql> +<tabs> 
-  * Öffne mit deinem Browser das phpmyadmin Interface: http://db.q-gym.de/phpmyadmin +  * [[#infbw|info-bw Datenbank Server]] 
-  * Infos zu Benutzern und Passwort bekommst du im Unterricht. +  * [[#kmg|KMG Friedrichshafen]] 
-</box> +<pane id="kmg">  
 +  <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe:** Anmeldung an mysql> 
 +    * Öffne mit deinem Browser das phpmyadmin Interface: https://dbms.kmg-fn.de 
 +    * Infos zu Benutzern und Passwort bekommst du im Unterricht. 
 +  </box> 
 +</pane> 
 +<pane id="infbw">  
 +  <box 90% round #f4ffc3 #e7f5aa #e7f5aa #e7f5aa |**Aufgabe:** Anmeldung an mysql> 
 +    * Öffne mit deinem Browser das phpmyadmin Interface: https://sql.info-bw.de 
 +    * Infos zu Benutzern und Passwort bekommst du im Unterricht/in der Fortbildung
 +  </box> 
 +</pane> 
 +</tabs>
 ===== Datenbankimport ===== ===== Datenbankimport =====
  
Zeile 41: Zeile 52:
  
 ==== 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 71:
 Die Abfrage  Die Abfrage 
 <code sql> <code sql>
-  SELECT * FROM artikel WHERE Id = 10+  SELECT * FROM adressen WHERE Id = 10
 </code> </code>
  
Zeile 68: Zeile 79:
 Führe die beiden Beispielabfragen auf deiner Datenbank aus. Führe die beiden Beispielabfragen auf deiner Datenbank aus.
 </box> </box>
-==== Übung 1 ====+ 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A1) ===
  
 Arbeite mit der {{.:sql_befehle_a.pdf|Befehlsübersicht A}} in der Tabelle ''adressen''. Filtere mit einer geeigneten SQL-Abfrage die folgenden Informationen aus der Tabelle heraus. Arbeite mit der {{.:sql_befehle_a.pdf|Befehlsübersicht A}} in der Tabelle ''adressen''. Filtere mit einer geeigneten SQL-Abfrage die folgenden Informationen aus der Tabelle heraus.
  
-  - Alle Datensätze mit Name, Vorname und Wohnort.+  - Alle Name, Vorname und Wohnort aller Datensätze.
   - Die Vor- und Nachnamen aller gespeicherten Adressen.   - Die Vor- und Nachnamen aller gespeicherten Adressen.
   - Alle Postleitzahlen und Orte, deren PLZ größer oder gleich 80000 ist.   - Alle Postleitzahlen und Orte, deren PLZ größer oder gleich 80000 ist.
Zeile 83: Zeile 97:
   - Alle Personen mit einem Faxgerät und einem Mobiltelefon, deren Nachnamen ein "y" enthält.   - Alle Personen mit einem Faxgerät und einem Mobiltelefon, deren Nachnamen ein "y" enthält.
   - Alle Personen, die jünger als 45 Jahre sind, in einem Ort wohnen der mit "A" beginnt und mehr als 3333 Bonuspunkte gesammelt haben.   - Alle Personen, die jünger als 45 Jahre sind, in einem Ort wohnen der mit "A" beginnt und mehr als 3333 Bonuspunkte gesammelt haben.
-  - Alle Personen, die nicht am Bonusprogramm teilnehmen. 
  
-Denke dir weitere Kriterien für die Filterung von Adressen aus, notiere diese und erstelle eine passende SQL Abfrage.+---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A2) ===
  
 +Denke dir mindestens 2 weitere Kriterien für die Filterung von Adressen aus, notiere diese und erstelle eine passende SQL Abfrage.
  
-Arbeite jetzt mit {{.:sql_befehle_b.pdf|Befehlsübersicht B}} in der Tabelle ''artikel''.+---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A3) === 
 +Arbeite jetzt mit {{.:sql_befehle_b.pdf|Befehlsübersicht B}} in der Tabelle ''adressen''.
 Man kann mit den Werten, die von einer ''SELECT''-Abfrage zurückgegeben werden auch rechnen (lassen): Man kann mit den Werten, die von einer ''SELECT''-Abfrage zurückgegeben werden auch rechnen (lassen):
  
Zeile 95: Zeile 114:
 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 ArtikelnummerNamen und Preis ausaufsteigend sortiert nach Artikelnummer+  - Alle Personendie mehr als 15 offene Rechnungen haben. 
-  - Alle Artikel mit NummerNamealtem Preis und neuem Preis auswobei der neue Preis dem um eins erhöhten alten Preis entspricht. +  - Die Anzahl der Personendie mehr als 10 offene Rechnungen haben. 
-  - Gib die Tabelle aus, die alle verschiedenen Preise der Artikel absteigend sortiert enthält. +  - 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 und deren Bestand genau 70 Stück umfasst+  - Alle VornamenNachnamen,, 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 der Artikel aus, in deren Namen „datenbank“ vorkommt+  - Alle Postleitzahlen in der Datenbank 
-  - Gib Titel und Preis mit Mehrwertsteuer aus.+  - Alle Geburtsdaten, die in der Datenbank vorkommen, ohne die Datensätze, bei deinen kein Geburtsdatum angegeben ist 
 +  - Den Datensatz mit dem höchsten Kontostand 
 +  - Die durchschnittliche Zahl der Bonuspunkte aller Personen aus Aachen die am Bonusproramm teilnehmen. 
 +  - Die durchschnittliche Zahl der offenen Rechungen aller Personendie jünger als 35 Jahre sind und nicht am Bonusprogramm teilnehmen
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A4) === 
 + 
 +Überlege dir 5 weitere verschachtelte Abfragen mit mehreren Kriterien, welche die Befehle aus Blatt B verwenden. 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (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 mit SELECT SUBSTRING_INDEX, Infos dazu z.B. dort: 
 +https://www.w3schools.com/sql/func_mysql_substring_index.asp 
 + 
 +<WRAP center round box 90%> 
 +**Hinweis**: Wir werden später sehen, dass ein solches Vorgehen eigentlich vermieden werden sollte - man möchte für gewöhnlich die Informationen so in der Tabelle ablegen, dass man die Inhalte nicht manipulieren muss, um an die Informationen zu gelangen. 
 +</WRAP> 
 + 
 +++++ 
 + 
 +++++ Lösungshinweis II | 
 + 
 +Für die Maildomains sieht de Lösung so aus
 +<code sql> 
 +SELECT DISTINCT SUBSTRING_INDEX(EMail, "@", -1) FROM adressen;  
 +</code> 
 + 
 +Die Lösung für die Vorwahlen kannst du sicher selbst finden. 
 +++++ 
 +==== Material ==== 
 + 
 +{{simplefilelist>:faecher:informatik:oberstufe:datenbanken:sql_abfrage:*}} 
  
  • faecher/informatik/oberstufe/datenbanken/sql_abfrage/start.1604518475.txt.gz
  • Zuletzt geändert: 04.11.2020 20:34
  • von sbel