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

Variante: Variablen einsetzen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wird ein und dasselbe Kriterium für mehrere Anweisungen benötigt, kann der Einsatz einer Variablen eine praktische Hilfe sein. Wie das funktioniert, zeigt Ihnen der Tipp in diesem Video.

Transkript

Ich möchte dieses Video dazu nutzen, Ihnen eine interessante Alternative zur Lösung des vorigen Beispiels zu zeigen. Wir mussten ja hier mehrmals Lieferantennummern übernhemen, auslesen, eintragen und so weiter. Sehr elegant ist es, wenn wir diese in Variablen speichern und diese innerhalb der Anweisungen verwenden. Denn dann brauchen wir uns zum Beispiel keine Gedanken darüber machen, welche denn nun die neu vergebene Lieferantennummer ist und auf welche Lieferantennummer damit bestimmte Einträge geändert werden müssen. Ich möchte Ihnen jetzt zeigen mit den drei Systemen, wie Sie dazu jeweils vorgehen. Ein Hinweis natürlich, der Einsatz von Variablen hat jetzt nichts mit ANSI SQL zu tun, das ist hier nicht definiert und standardisiert, das sind die entsprechenden Spracherweiterungen der Systeme, die hier zum Einsatz kommen. Beim Microsoft SQL Server verwenden wir die Transact-SQL-Variante "DECLARE", um eine Ware zu deklarieren. Der Name einer Variablen muss immer mit einem Klammeraffen beginnen gefolgt vom Datentyp in unserem Fall "int" für die Lieferantennummer. Ich weise hier gleich, das könnte ich auch anschließend mit Anweisung "SET" machen, aber einfacher ist es so, gleich einmal den Wert zu "1002" für die Variable "alt". Danach deklariere ich eine Variable "neu" ebeneso als "int" und hier verwenden wir die Unterabfrage, die wir schon bei der vorigen Lösung verwendet haben, um die nächste freie Lieferantennummer zu eruieren und speichern diese in der Variable. Nun können wir diese Variablen in den SQL-Anweisungen verwenden. Ich habe die eins zu eins von der vorigen Lösung die wir hier schon eingesetzt haben, kopiert. Ich habe alle Werte noch zurückgesetzt auf die Ausgangssituation, damit wir den ganzen Vorgang mit den Variablen hier noch einmal starten können. Hier verwende ich allerdings nicht mehr die Lieferantennummern direkt hartcodiert in der Anweisung, sondern meine Variablen. Das heißt hier liefert mir meine "SELECT"-Anweisung über die Variable "alt" den alten Lieferanten und beim Einfügen hier an dieser Stelle, verwende ich die Variable "neu". Vor allem in den anschließenden Updates ist es praktisch, da ich hier einfach vordefiniert "SET lief = @neu", um den neuen Wert zuzuweisen, und in der "WHERE"-Klausel "WHERE lief = @alt" für den alten Wert und am Ende löschen wir auch den richtigen Wert durch das Verwenden der Variable. Das hat den Vorteil, dass ich nun alle Anweisungen hier gemeinsam ausführen kann und mir keine Gedanken machen muss über die dazu verwendeten Nummern. Ein Kontrollblick vorweg noch einmal in die Tabelle "Lieferanten", "WHERE liefnr = 1002" die uns zeigt, dass an und für sich diese Firma hier noch vorhanden ist. Ich starte eine Transaktion. Wichtig ist, dass ich das hier gemeinsam markiere, das Deklarieren der Variablen, denn sonst würden diese nicht gelten. Also ganz wichtig gemeinsam das alles markiert, inklusive dem "DELETE". Ich könnte das "COMMIT" oder "ROLLBACK" auch noch mitnehmen, möchte ich aber jetzt bewusst nicht tun. Ich führe diese Anweisungen aus und sehe jetzt, dass alles in einem passiert ist. Das war das "INSERT", das waren die einzelnen Updates und das war das "DELETE". Das heißt, wir haben jetzt alles auf diesen neuen Lieferanten umgestellt. Den alten, kontrolliere ich hier, gibt es nicht mehr. Ich markiere jetzt einmal nur diesen Teil und dann sehen wir, dass jetzt mit dieser Nummer dieser Datensatz eingefügt wurde. Und wenn das passt, bestätige ich noch alles mit "COMMIT". Das ist doch eine sehr, sehr praktische Variante hier mit dem Einsatz der Variablen. Die gleiche Logik können wir auch unter den anderen beiden Systemen umsetzen. Ich habe hier die Variante vorbereitet von MySQL. Auch hier fangen Variablen mit einem Klammeraffen an. Die Wertzuweisung, es gibt verschiedene Syntaxvarianten, kann mit "=" oder ":=" verwenden. Ich ziehe die Variante ":=" vor, da sie universeller verwendbar ist. Auffällig ist, dass hier unter MySQL die Variablen keinen Datentyp zugewiesen bekommen. Es können aber nicht alle Datentypen verwendet werden, aber "int" und "var character" sind dabei, deshalb haben wir jetzt hier kein Problem. Also ich weise auch hier der Variablen "alt" einmal fix die alte Nummer zu, die Variante neu weise ich direkt mit der Unterabfrage zu. Ich habe hier als Kommentar noch eine andere Syntaxvariante, die Sie auch einsetzen könnten. Also Sie könnten die Variablen direkt hier auch in der "SELECT"-Anweisung definieren oder eben mit "SET". Es gibt ja mehrere Varianten, die man unter MySQL verwenden kann, um Variablen werte zuzuweisen. Der Rest gleicht eigentlich dem, was wir zuvor für Microsoft SQL Server verwendet haben, wieder setzen wir anstelle der fixen Werte die Variablen hier in der Anweisung ein. Ich markiere nun alle Anweisungen gemeinsam und führe sie hier im Editor aus. Wir sehen, dass hier die ganzen Änderungen durchgeführt worden sind, die Zeilen gleich, wie wir es beim Microsoft SQL Server gesehen haben. Am Ende bestätige ich das Ganze noch mit einem "COMMIT". Zum Abschluss darf Oracle natürlich auch nicht fehlen. In Oracle gäbe es verschiedene Varianten, die, die aus meiner Sicht elegant ist, ist die Verwendung eines PL/SQL-Blocks. PL/SQL steht für "Procedural Language SQL Sequel", das ist die Spracherweiterung bei Oracle, die Variablen eben für prozedurale Programmierung zur Verfügung stellt. Damit wieder mit meinem '&' hier nichts passiert, verwende ich wieder vorweg die Anweisung "SET DEFINE OFF". In einem "DECLARE"-Block, man nennt es einen Block, definiere ich meine Variable. Diese müssen hier nicht mit einem Klammeraffen beginnen, ich verwende hier "v_" für "Variable". Auch hier weise ich einen Datentyp zu, "NUMBER" und hier gleich einen Wert. In einem "BEGIN-END"-Block kommen die eigentlichen Anweisungen. Über ein "SELECT"-Statement wird bei Oracle, das funktioniert hier etwas anders, als wir es bei MySQL und Microsoft SQL Server gesehen haben Mit einem "SELECT INTO" wird hier eine Variable befüllt, das heißt, direkt in die "SELECT"-Anweisung hier der Wert "INTO", Name der Variablen. Ansonsten wieder die gleiche Vorgangsweise. Sie sehen hier in den Statements die entsprechenden Variablennamen verwendet und damit können wir diese Anweisungen nun gemeinsam markieren und ausführen. Wichtig ist, dass alles markiert wird, was hier zusammengehört, und mit F5 oder diesem Symbol hier führe ich diese Anweisungen hier aus. Wir sehen, jetzt war es ein anonymer Block, weil es in keiner Prozedur gespeichert war, ist abgeschlossen worden und mit diesem "SELECT" sehen wir, dass nun – ich markiere das hier, damit das hier funktioniert – Sie sehen, der hat jetzt ein Problem gehabt beim Abschluss hier im Editor, deshalb hat er das oben mitgenommen und deshalb die kurze Fehlermeldung hier. Ich markiere die Zeile, dann funktioniert das wieder. und jetzt sehen wir, "1002" ist nicht mehr da, aber der neue Wert wurde jetzt eingefügt und mit einem "COMMIT" können wir das Ganze abschließen. Und auch hier markiere ich wieder die ganze Anweisung, damit das hier sauber funktioniert. Sie haben also gesehen, dass Sie bei allen Systemen Variablen auch dazu verwenden können, Dinge zu optimieren und zu verbessern, wenn Dinge wiederverwendet werden sollen. Das macht gerade die Lösung für diese Aufgabenstellung sehr elegant. Bei Oracle haben wir "DECLARE" verwendet, als eigenen Block hier beim Microsoft SQL Server, die "DECLARE"-Anweisung, um Variablen zu definieren. und unter MySQL hier mit "SET" oder "SELECT", ohne eine eigentliche "DECLARE"-Anweisung werden Variablen ins Leben gerufen. Das ist allerdings schon eine Spracherweiterung zu SQL, und wird nicht mehr als Standard-SQL betrachtet.

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!