SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 3: Wert mit einer Unterabfrage einfügen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Sie haben einen neuen Lieferanten für Malfarben. Als Lieferantennummer soll die höchste aktuell enthaltene um eins erhöht werden. Lesen Sie diese direkt mit einer Unterabfrage aus. Die Firmenbezeichnung und die weiteren Inhalte können Sie frei wählen.

Transkript

Auch in diesem Beispiel soll ein neuer Lieferant angelegt werden. Allerdings soll diesmal die Lieferantennummer nicht fix vorgegeben, sondern aus der Tabelle ausgelesen werden. Und zwar in der Art, dass die höchste vorhandene Lieferantennummer um eins erhöht wird. Mit dieser Anweisung können wir uns hier unter MySQL die höchste Lieferantennummer auslesen, d. h. das ist der Lieferant mit der Nummer "2005", die Firma "Obermeier". Über "LIMIT 1" und mit dieser Sortierung bekommen wir diese Zeile heraus. Welche Informationen Sie in die übrigen Spalten einfügen, bleibt Ihnen völlig frei überlassen. Wichtig ist, dass über eine Unterabfrage die Nummer automatisch vergeben wird und eingefügt wird. Pausieren Sie nun das Video und lösen Sie die Aufgabe. Wenn Sie damit fertig sind, fahren Sie mit dem Video fort und sehen Sie sich meine Musterlösung an. Ich bin mir sicher, das war keine allzu schwere Aufgabenstellung für Sie. Betrachten wir uns hier ein Musterergebnis. Ich habe hier eine Firma "Kunterbunt GmbH" aus "Neuss" erfasst und hier ist die entscheidende Stelle. Die Unterabfrage liest die höchste vorhandene Lieferantennummer aus, und erhöht sie um "1". Wichtig ist unter MySQL, dass in dieser Konstellation die Verwendung der VALUES-Klausel nicht möglich ist. Das würde zu einem Fehler führen. Sie müssen hier also das VALUES durch ein SELECT ersetzen. Dann funktioniert das allerdings problemlos. Worauf Sie achten müssen, ist, dass Sie, wenn Sie VALUES durch SELECT ersetzen, die Werte nicht separat noch einmal in runde Klammern gesetzt werden, wie es eben bei VALUES üblich ist. Ich führe nun diese Anweisung aus und betrachte das Ergebnis. Und ich sehe nun die "Kunterbunt GmbH" eingefügt und sie hat nun die nächsthöhere Lieferantennummer "2006". Und mit COMMIT bestätige ich wieder das Einfügen. Betrachten wir uns nun, dasselbe z. B. unter dem*Microsoft SQL Server. Die Anweisung, um den Lieferanten mit der höchsten Lieferantennummer auszuwählen, unterscheidet sich hier ein wenig. An Stelle von "LIMIT 1" am Ende, kommt hier direkt hinter das SELECT die Anweisung TOP 1. Aber ansonsten ist dasselbe Ergebnis hier zu sehen, die Firma "Obermeier" mit der Lieferantennummer "2005". Nach dem Starten einer Transaktion, fügen wir auch hier den neuen Lieferanten ein. Die Unterabfrage liefert mir auch hier, mit der Funktion MAX +1, die nächsthöhere Lieferantennummer. Und ich kann das hier schon mal ausführen um das zu testen. Ganz normal kann ich hier die VALUES-Klausel verwenden. Ich muss hier nicht wie bei MySQL auf SELECT ausweichen. Wichtig ist, die runden Klammern am Beginn und Ende der Werteliste bleiben hier natürlich bestehen. Und mit dieser Anweisung fügen wir nun diese Zeile ein. Ich bestätige das Einfügen, und kontrolliere auch hier das Ergebnis und es passt. Unter Oracle ist es ein wenig aufwendiger, den Lieferanten mit der höchsten Lieferantennummer zu eruieren. Da es weder LIMIT noch TOP gibt, müssen wir eine Unterabfrage auch hierzu verwenden. In der Unterabfrage nehmen wir die Sortierung vor und in der Hauptabfrage limitieren wir auf "ROWNUM = 1", damit nur die erste Zeile, und das ist die mit der höchsten Lieferantennummer, ausgegeben wird. Das INSERT an für sich gleicht der Variante vom Microsoft SQL Server. Hier gibt es keinen Unterschied und ich führe die idente Anweisung nun aus und bekomme den Hinweis, dass diese Zeile eingefügt worden ist. Auch hier kontrolliere ich zum Abschluss das Ergebnis. Wir haben an diesem Beispiel gesehen, dass man auch über eine Unterabfrage einen einzelnen Wert auslesen und bei einem INSERT mitgeben kann. Wichtig ist, dass die Unterabfrage nur eine Zeile und eine Spalte liefert, sonst würde sie einen Fehler erzeugen. Und dass sie in runde Klammern gesetzt wird. Achten Sie bei MySQL darauf, dass Sie das VALUES durch ein SELECT ersetzen, denn sonst bekommen Sie einen Fehler.

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!