====== Daten abrufen ====== Nachdem wir [[insert|zuvor]] gelernt haben, wie wir eine Tabelle mit Daten versorgen, wollen wir nun unsere Daten wieder abfragen. ===== Ungefiltert ===== Die einfachste Möglichkeit, um Daten abzurufen ist sich alles Anzeigen zu lassen. Gib bitte folgenden Befehl in die Konsole ein: SELECT * FROM staff; und die Datenbank liefert Dir die bisher eingetragen Daten wieder zurück: mysql> select * from staff; +------------+----------+---------------+-----------+------+---------------+ | Department | Salary | FamilyName | GivenName | Sex | DateOfJoining | +------------+----------+---------------+-----------+------+---------------+ | 1 | 50000.00 | Boss | Bert | m | 2010-01-01 | | 2 | 30000.00 | Handel | Holger | m | 2010-06-01 | | 3 | 28000.00 | Helfer | Herbert | m | 2010-08-01 | | 4 | 25000.00 | Redseelig | Renate | f | 2011-01-01 | | 2 | 20000.00 | Ramsch | Rainer | m | 2012-04-01 | | NULL | NULL | Aushilfskraft | Arne | m | 2013-02-01 | +------------+----------+---------------+-----------+------+---------------+ 6 rows in set (0.00 sec)5 rows in set (0.00 sec) Das ist natürlich jetzt noch etwas billig, denn das Ziel einer Datenbank ist ja auch Daten filtern zu können. ===== Filtern nach Spalten (Projektion) ===== Wenn ich mich zum Beispiel nur für die Namen der Mitarbeiter interessiere, kann ich den ''SELECT'' Befehl so anpassen, dass ich die gewünschten Spalten auswähle: SELECT GivenName, FamilyName FROM staff und erhalten die Ausgabe: +-----------+---------------+ | GivenName | FamilyName | +-----------+---------------+ | Bert | Boss | | Holger | Handel | | Herbert | Helfer | | Renate | Redseelig | | Rainer | Ramsch | | Arne | Aushilfskraft | +-----------+---------------+ 6 rows in set (0.00 sec) Dies kann zum einen eine Mitarbeiter-Liste darstellen, wie auch eine Mitgliederliste in einem Forum, bei die Spalte Passwort vielleicht nicht unbedingt öffentlich gezeigt werden soll und deswegen ausgefiltert wird. ===== Filtern nach Datensätzen (Selektion oder Restriktion) ===== Oftmals sucht man ja auch nach bestimmten Mitarbeitern. Die Abteilung 2 ist der Verkauf. Wenn ich nun wissen möchte, wer im Verkauf arbeitet, möchte muss ich erfragen, wer als Department 2 eingetragen hat: SELECT * FROM Staff WHERE Department = 2; und bekomme die entsprechende Liste: +------------+----------+------------+-----------+------+---------------+ | Department | Salary | FamilyName | GivenName | Sex | DateOfJoining | +------------+----------+------------+-----------+------+---------------+ | 2 | 30000.00 | Handel | Holger | m | 2010-06-01 | | 2 | 20000.00 | Ramsch | Rainer | m | 2012-04-01 | +------------+----------+------------+-----------+------+---------------+ 2 rows in set (0.00 sec) ===== Spaltennamen ändern und Filtern nach Spalten und Zeilen ===== Das lässt sich natürlich auch wunderbar kombinieren. Beim "Hello World" in der vorherigen Lektion haben wir außerdem den Befehl ''SELECT "Hello World" AS "";'' kennen gelernt. Hier wird der String "Hello World" zurückgegeben für die Spalte mit dem Namen "". Mit ''AS'' können wir also die Spaltennamen ändern. Für eine schöne Tabelle können wir also auch ein wenig tricksen: SELECT FamilyName AS "Mitarbeiter der Abteilung Verkauf", GivenName AS "" FROM Staff WHERE Department = 2; und erhalten: +-----------------------------------+--------+ | Mitarbeiter der Abteilung Verkauf | | +-----------------------------------+--------+ | Handel | Holger | | Ramsch | Rainer | +-----------------------------------+--------+ 2 rows in set (0.00 sec) ====== Übungen ====== * Formuliere eine Abfrage, die alle Mitarbeiter anzeigt, die mehr als 25000 Euro verdienen * Formuliere eine Abfrage, die die Namen alle weiblichen Mitarbeiter anzeigt * Formuliere eine Abfrage, die alle Mitarbeiter anfragt, die vor dem 1. Januar 2011 in die Firma eingetreten sind * Formuliere eine Abfrage, die alle Mitarbeiter mit dem Vornamen "Bert" anzeigt * Formuliere eine Abfrage, die alle Mitarbeiter anzeigt, deren Nachname mit 'H' beginnt. Der Vergleichsoperator lautet ''LIKE'' und der Platzhalter für beliebige Zeichen ist das Prozentzeichen. ====== Ziel dieser Lektion ====== Du solltest nun in der Lage sein aus einer einzelnen Tabelle Daten auszufiltern. In der [[update|nächsten Lektion]] werden wir lernen, wie wir den armen Arne Aushilfsarbeiter wieder entlassen - aber nur übergangsweise. Wir werden nämlich auch lernen, wie wir Datensätze aktualisieren, damit er ein zukünftig auch ein Gehalt erhält.