Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 9: Bestimmte Monate auswählen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Welche Mitarbeiterinnen haben in den Monaten April, Juli und September Geburtstag? Sortieren Sie das Ergebnis aufsteigend nach dem Geburtsdatum und formatieren Sie es mit dem bei uns gebräuchlichen Format.

Transkript

In diesem Video üben wir den Einsatz der WHERE-Klausel. Es geht darum, aus der Tabelle personal nur jene Mitarbeiterinnen herauszufiltern, die in den Monaten April, Juli und September Geburtstag haben. Hier im Ergebnis sehen wir noch alle Mitarbeiter, die in diesen drei Monaten Geburtstag haben, aber im Endergebnis wollen wir nur die weiblichen Mitarbeiter. Was müssen wir hier tun? Wie benötigen für dieses Beispiel die Tabelle personal. In der Spalte gebdatum vom Datentyp datetime hier bei MySQL, finden wir das Geburtsdatum. Um hier auf diese drei Monate zu filtern, müssen wir die Monate mit einer entsprechenden Funktion heraus extrahieren. Zusätzlich möchten wir die Damen gefiltert haben, das heißt nur die Edita, die Marion und die Bernadette sollen im Ergebnis aufscheinen. Dazu brauchen wir noch eine weitere Einschränkung auf die Spalte geschlecht. In der Spalte geschlecht finden wir ein numerisches Kürzel, 1 steht hier für weiblich, 2 für männlich. Zusätzlich möchten wir als Übung auch die Spalte mit dem Geburtsdatum sauber formatiert ausgeben, das heißt nicht das Standardformat, so wie es aus der Datenbank kommt, sondern unser deutsches gebräuchliches Format, zum Beispiel 15.09.1973, als Aliasnamen können wir hier geboren verwenden. Wenn wir das Ergebnis letztendlich noch aufsteigend nach dem Geburtsdatum sortieren, achten Sie bitte darauf, dass Sie für die Sortierung nicht den als Text formatierten Inhalt verwenden, denn dies würde zu einer nicht korrekten Reihenfolge führen. Filtern Sie also nach dem Monat und nach dem Geschlecht, und formatieren Sie das Datum entsprechend, achten Sie darauf, dass Sie, wie bei der Sortierung auf das Datum, und nicht auf den formatierten Geburtstagswert referenzieren, denn dieser ist nach dem Formatieren ja ein Text. Betrachten wir uns nun hier die Lösung, ich starte hier mit MySQL. Das ist die Anweisung, die im ersten Schritt einmal auf das Monat filtert, und das Geburtsdatum formatiert, ich habe hier noch nicht auf die Damen eingeschränkt, das liefert mir dieses Zwischenergebnis. Mit nachname und vorname hole ich mir das Geburtsdatum. Mit der Funktion DATE_FORMAT unter MySQL und diesem Format sorge ich dafür, dass es in dieser Form ausgegeben wird. Beim Filtern möchten wir auf die Monate April, Juli und September zurückgreifen, deshalb verwenden wir hier die Funktion MONTH, um eben das Monat aus dem Geburtsdatum heraus zu extrahieren. Die MONTH liefert uns das Monat als Zahl, und deshalb können wir mit dem Vergleich IN(4,7,9) auf diese drei Monate filtern. Wenn wir zusätzlich noch auf die Damen einschränken wollen, müssen wir lediglich den Zusatz AND geschlecht = 1, denn 1 steht in unserer Beispieldatenbank für weiblich und 2 für männlich, filtern. Und mit dieser Anweisung bekommen wir das Endergebnis. Diese drei Mitarbeiterinnen werden herausgefiltert. Ausserdem habe ich hier nach der Spalte gebdatum sortiert, und nicht nach geboren, denn hinter dem Begriff geboren verbirgt sich dieser Ausdruck, und das würde nach Textgegebenheiten sortiert werden, und das muss nicht korrekt sein. Aber damit sortieren wir explizit nach dem Geburtsdatum, und das ist ein Datum und das sortiert in der richtigen Form. Als Variante hätten wir auch die DATE_FORMAT Funktion verwenden können, für das Filtern, indem wir nicht mit der MONTH-Funktion arbeiten, sondern mit DATE-FORMAT nur das Monat herausholen, allerdings wäre das hier ein Text mit führender Null, und wir müssten den Vergleichswert auch auf diese Art eingeben. Ob das jetzt die bessere Variante, sei dahin gestellt, mir gefällt die erste besser, aber das wäre eine alternative Lösung. Ausserdem ist das ein guter Übergang zur Lösung unter Oracle, die wir uns nun als Nächstes ansehen wollen. Denn bei Oracle gibt es keine MONTH-Funktion, da müssen wir genau auf die Funktion TO-CHAR, das Pendant zur gerade gesehenen Funktion unter MySQL, zurückgreifen. Mit der Funktion TO-CHAR können wir einerseits hier das Datum formatieren, indem wir dieses Format DD.MM. und viermal Y angeben. Aber auch um das Monat herauszufiltern, verwenden wir diese Funktion. Mit TO-CHAR gebdatum, und dem Format 'MM', bekommen wir das Monat zweistellig mit führender Null. Wenn wir es mit einer Zahl vergleichen wollen, 4,7,9, ist es die saubere Variante, wenn wir diesen Zwischenwert zusätzlich mit der Funktion TO-NUMBER, daher noch in eine Zahl umwandeln. Es würde zwar mit der impliziten Konvertierung auch funktionieren, aber so ist es die saubere Variante, und das liefert uns dieses gewünschte Ergebnis, hier noch ohne die Filterung auf die Damen und hier mit dem Zusatz und (AND) geschlecht = 1, um nur diese drei Datensätze herauszufiltern. Bei Oracle müssen wir eben auf diese Funktion TO-NUMBER und TO-CHAR zurückgreifen. Alternativ könnten wir uns natürlich auch die Konvertierung in eine Zahl sparen, und zum Beispiel mit dem Format fm und zweimal großes MM, auf das Datum ohne führende Null zurückgreifen, dann müssten wir es hier unter Hochkomma setzen, und auch das würde uns dasselbe Ergebnis liefern. Das ist aber Geschmackssache, ich würde die vorige Variante schöner finden. Das heißt, der Unterschied bei den einzelnen Datenbankmanagementsystemen liegt eigentlich nur darin, wie wir das Monat aus dem Datum heraus extrahieren. Da würden wir eben unterschiedliche Funktionen verwenden. und zum Abschluss noch einen kurzen Blick zum Microsoft SQL Server, die Lösung ist sehr ähnlich wie wir Sie schon bei MySQL gesehen haben, auch hier, ich verwende gleich die zweite Variante inklusive dem Geschlecht, verwenden wir die Funktion MONTH, die hat hier die gleiche Syntax wie unter MySQL, um auf diese drei Monate zu filtern, und ich schränke auch hier auf das Geschlecht ein. Um das Datum in dieser formatierten Form auszugeben, verwenden wir hier die CONVERT-Funktion, und konvertieren mit dem Format 104, das ist das deutsche Format, in einen Text. Alternativ, ab dem SQL Server 2012, könnten wir auch die FORMAT-Funktion verwenden, bei der wir ja als Parameter d für ein Datum, und dann die deutsche Form mit de-de, das ist der Parameter CULTURE dieser Funktion, ebenso auf diese Art und Weise ausgeben können. Also keine großen Unterschiede zwischen den drei Datenbankmanagementsystemen. Wenn wir auf diese drei Monate filtern möchten, müssen wir diese also mit einer entsprechenden Funktion heraustrennen, um dann mit dem Vergleichsoperator IN auf diese drei Monate zu filtern. Die weitere Bedingung ergänzen wir mit AND - nachdem das Geschlecht vom Datentyp einen numerischen Wert aufweist, wir werfen ganz schnell noch einen Blick hier in die Tabelle personal, um das zu sehen, geschlecht, wir sehen jetzt hier tinyint, deshalb wird der Wert 1 hier auch nicht unter Hochkomma gesetzt. Unterschiede bei den Systemen gibt es im Einsatz, und in der Syntax von Funktionen.

SQL Grundkurs 2: Aufgaben und Lösungen

Vertiefen Sie Ihre SQL-Kenntnisse. In diesem Workshop erhalten Sie zahlreiche Beispielaufgaben, die Sie selbst lösen können. Anschließend zeigt Ihnen der Trainer die Lösung.

7 Std. 41 min (61 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieses Training setzt SQL-Kenntnisse voraus, wie sie beispielsweise in „SQL lernen und anwenden“ vermittelt werden.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!