SQL – Daten Abfragen

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.

Anmelden am Webinterface

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

Aufgabe: Anmeldung an mysql

Öffne mit deinem Browser das phpmyadmin Interface: http://db.q-gym.de/phpmyadmin

Infos zu Benutzern und Passwort bekommst du im Unterricht.

Datenbankimport

Wir arbeiten zunächst mit einer Beispieldatenbank, die ca. 20.000 automatisch erzeugte Namen und Adressen enthält.

Aufgabe: Import der Datenbank

Lade die Datei adressen_beispiel.sql.zipauf 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.

Aufbau einer SQL Abfrage

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) Im SQL Befehlsfenster in phpmyadmin kann auf den Strichpunkt verzichtet werden, nicht aber auf der mysql-Kommandozeile oder bei der Abfrage aus PHP o.ä. .

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.

Ausführungsreihenfolge

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

Beispiele

Die SQL-Abfrage

SELECT * FROM artikel WHERE APreis>10

liefert die Tabelle aller Artikel, die teurer als 10 Euro sind. Die Wildcard * steht für alle Tabellenspalten.

Die Abfrage

SELECT * FROM artikel WHERE ANr = 100007

Ermittelt alle Artikel mit der Artikelnummer 100007.

Aufgabe: Abfragen Führe die beiden Beispielabfragen auf deiner Datenbank aus.

Übung 1

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

Alle Artikel mit Artikelnummer, Namen und Preis.

Alle Namen der Bücher.

Artikelnummer, Name und Preis aller Bücher, von denen mehr als 30 am Lager sind.

Artikelnummer, Name und Preis aller Bücher, von denen mehr als 30 und weniger als 90 am Lager sind.

Alle Bücher, in denen es um CSS geht

Alle Informationen zum Buch mit den Cover-Bild 82724415.jpg

Alle Informationen zu allen Büchern, die weniger als 15EUR kosten

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.

Artikel mit Artikelnummer, Namen und Preis aus, aufsteigend sortiert nach Artikelnummer.

Alle Artikel mit Nummer, Name, altem Preis und neuem Preis aus, wobei der neue Preis dem um eins erhöhten alten Preis entspricht.

Gib die Tabelle aus, die alle verschiedenen Preise der Artikel absteigend sortiert enthält.

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.

Gib die verschiedenen Preiskategorien der Artikel aus, in deren Namen „datenbank“ vorkommt.

Gib Titel und Preis mit Mehrwertsteuer aus.