faecher:informatik:oberstufe:datenbanken:sql_abfrage:start

Dies ist eine alte Version des Dokuments!


SQL – Daten Abfragen

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.

Wir haben ein zentrales DBMS zur Benutzung durch die Schülerinnen und Schüler eingerichtet:

Aufgabe: Anmeldung an mysql

Aufgabe: Import der Datenbank

  • 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, andernfalls scheitert der Import mit einem Fehler, da keine neuen Datenbanken angelegt werden können.

Du erhältst eine Tabelle: adressen in deiner Datenbank, in der ca. 20.000 Datensätze enthalten sind.

Klicke die Tabelle an und mache dich mit den gespeicherten Daten etwas vertraut.

Die Sprache SQL (Structured Query Language) wird weltweit gesprochen und (fast) jede (relationale) Datenbank kann damit abgefragt werden. SQL ähnelt etwas dem gesprochenen Englisch und wird in den Abfragen in der Regel mit Großbuchstaben geschrieben, damit Befehle besser von Argumenten unterscheiden kann. Es funktionieren allerdings auch kleingeschriebene Befehle. Jede SQL Abfrage muss mit einem Semikolon (aka Strichpunkt) abgeschlossen werden1).

Eine Klausel für SQL-Abfragen ist im Wesentlichen folgendermaßen aufgebaut:

  SELECT [DISTINCT] { spalten | * }
  FROM tabelle [alias] [,tabelle [alias]] ...
  [WHERE {bedingung}]
  [GROUP BY spalten [HAVING {bedingung}]]
  [ORDER BY spalten [ASC | DESC]];

Argumente in eckigen Klammern sind dabei optional, die Schreibweise { spalten | * } bedeutet eine der durch den | getrennte Möglichkeiten, also entweder eine Liste der zu wählenden Spalten oder das Sternchen für alle Spalten.

FROM (Tabellenauswahl)
-> WHERE (Zeilenauswahl bzw. Selektion) 
-> GROUP BY (Gruppierung) 
-> HAVING (Gruppenauswahl) 
-> SELECT (Spaltenauswahl bzw. Projektion) 
-> ORDER BY (Sortierung)

Die SQL-Abfrage

  SELECT * FROM adressen WHERE Hausnummer > 100

liefert eine Tabelle aller Datensätze, bei denen die Hausnummer größer als 100 ist. Die Wildcard nach dem SELECT Statement * steht für alle Tabellenspalten.

Die Abfrage

  SELECT * FROM artikel WHERE Id = 10

Ermittelt den Datensatz mit der Id 10.

Aufgabe: Abfragen

Führe die beiden Beispielabfragen auf deiner Datenbank aus.

Arbeite mit der Befehlsübersicht A in der Tabelle adressen. Filtere mit einer geeigneten SQL-Abfrage die folgenden Informationen aus der Tabelle heraus.

  1. Alle Datensätze mit Name, Vorname und Wohnort.
  2. Die Vor- und Nachnamen aller gespeicherten Adressen.
  3. Alle Postleitzahlen und Orte, deren PLZ größer oder gleich 80000 ist.
  4. Vor- und Nachname aller Personen, die im Postleitzahlbereich 4xxxx bis 6xxxx wohnen.
  5. Alle Datensätze, mit den Nachnamen Maier, Mayer, Meier, Meyer oder Müller.
  6. Alle Personen, die mit „Herr“ angesprochen werden und älter als 80 Jahre sind.
  7. Alle Einträge die neuer als 10 Jahre sind.
  8. Alle Personen, die in einer Stadt wohnen, die ein „x“ enthält.
  9. Alle Einträge mit Vornamen, die mit „Am“ beginnen.
  10. Alle Personen mit einem Faxgerät und einem Mobiltelefon, deren Nachnamen ein „y“ enthält.
  11. Alle Personen, die jünger als 45 Jahre sind, in einem Ort wohnen der mit „A“ beginnt und mehr als 3333 Bonuspunkte gesammelt haben.
  12. 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.

Arbeite jetzt mit Befehlsübersicht B in der Tabelle artikel. Man kann mit den Werten, die von einer SELECT-Abfrage zurückgegeben werden auch rechnen (lassen):

Filtere mit einer geeigneten SQL-Abfrage die folgenden Informationen aus der Tabelle heraus.

  1. Artikel mit Artikelnummer, Namen und Preis aus, aufsteigend sortiert nach Artikelnummer.
  2. Alle Artikel mit Nummer, Name, altem Preis und neuem Preis aus, wobei der neue Preis dem um eins erhöhten alten Preis entspricht.
  3. Gib die Tabelle aus, die alle verschiedenen Preise der Artikel absteigend sortiert enthält.
  4. 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.
  5. Gib die verschiedenen Preiskategorien der Artikel aus, in deren Namen „datenbank“ vorkommt.
  6. Gib Titel und Preis mit Mehrwertsteuer aus.

1)
Im SQL Befehlsfenster in phpmyadmin kann auf den Strichpunkt verzichtet werden, nicht aber auf der mysql-Kommandozeile oder bei der Abfrage aus PHP o.ä.
  • faecher/informatik/oberstufe/datenbanken/sql_abfrage/start.1604518475.txt.gz
  • Zuletzt geändert: 04.11.2020 20:34
  • von sbel