SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 5: Einfügen mit SELECT

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ergänzen Sie in der Datenbank ein neues Interesse Süßwaren. Diesem sollen direkt allen weiblichen Kunden zugeordnet werden, außer jenen, denen bereits das Interesse Sportartikel zugewiesen ist.

Transkript

Nun möchten wir uns ein Beispiel vornehmen bei dem wir schon Themen aus verschiedenen Bereichen miteinander kombinieren müssen. Und zwar möchten wir als erstes in unsere Tabelle "interessen" ein neues Interesse einfügen, nämlich das Interesse für Süßwaren. Ich habe jetzt diese Zeile eingefügt. Nachdem ich hier bei Microsoft SQL Server keine explizite Transaktion gestartet habe ist dieser Input schon committed. Achten Sie darauf wenn Sie dieses Beispiel mit MySQL oder Oracle durchführen, dass Sie hier anschließend sofort ein COMMIT ausführen. Nun möchten wir dieses Interesse allen unseren Kundinnen zuweisen. Allerdings wollen wir jene, die gerne Sport betreiben nicht berücksichtigen, weil für die das vielleicht nicht so passend ist, dieses Interesse zuzuordnen. Ich habe hier diese Anweisung vorbereitet und führe diese aus. Diese zeigt uns nämlich an, wer bis jetzt schon das Interesse "Sport" zugewiesen hat. und wir sehen, das sind zwei Personen, die Sabina Kilian und der Michael Frisch. Das heißt die Sabina Kilian ist diejenige, die letztendlich nicht das Interesse Süßwaren zugeordnet bekommen darf. Achten Sie also darauf, dass alle, die das Interesse "Sport" haben ausgeschlossen werden aber außerdem nur die weiblichen Kundinnen dieses Interesse zugeordnet bekommen. Einen kleinen Tipp gebe ich Ihnen noch mit auf den Weg: Sie benötigen für das Lösen dieser Aufgabe eine Unterabfrage. 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. Sehen wir uns nun an, wie dieses Beispiel gelöst werden kann. Ich starte wieder eine Transaktion. Ziel ist es jetzt, alle weiblichen Kunden auszuwählen. Das mache ich z. B. mit diesem SELECT. Ich führe jetzt mal nur den markierten Teil aus und wir sehen, das sind zehn Kundinnen, die in der Tabelle enthalten sind. Für das spätere Einfügen habe ich hier schon das Kürzel des Interesses "Süßigkeit" ergänzt. Wir wollen aber, dass jene, die bereits das Interesse "Sport" aufweisen, nicht berücksichtigt werden. Diese Unterabfrage, die ich hier ergänzt habe, liefert uns die Kundennummer aller Kunden, die bereits das Interesse Sport haben. Über die zusätzliche Filterbedingung "AND kdnr NOT IN", d. h. die Kundennummer ist nicht in dieser Liste, schließen wir nun, in dem Fall die "Sabina Kilian" aus. Zum Test führe ich diese Anweisung aus und wir sehen, wir bekommen nunmehr neun Zeilen zurückgeliefert. Diese neun Zeilen wollen wir nun in die Tabelle einfügen. "INSERT INTO wawi.kundeninteressen" und zwar zuerst den Intcode und dann die Kundennummer. Die zusätzliche Spalten, die ich hier zum Prüfen des Ergebnisses vorweg ergänzt habe, kommentiere ich nun aus. Und noch einmal teste ich diesen hinteren Teil der Anweisung. Und das ist nun das, was beim Ausführen der Anweisung eingefügt wird. Ich starte nun diese Anweisung und bekomme als Ergebnis, dass neun Zeilen hier eingefügt worden sind. Zur Kontrolle habe ich jetzt diese Anweisung hier vorbereitet, sie uns nun auslesen soll, welche Kundinnen das Interesse aufweisen. Da sollte ich natürlich jetzt auch noch hier das richtige Interesse eintragen. Und nun sehen wir, diese neun Kundinnen weisen das Interesse "Süßwaren" auf. Und wenn wir uns das genau betrachten, sehen wir, dass jetzt die "Sabina Kilian" hier nicht enthalten ist. Um Ihnen eine zweite Variante zu zeigen, mache ich das Einfügen mit diesem ROLLBACK noch einmal rückgängig. Eine andre Variante, die vor allem bei großen Tabellen vorteilhaft sein kann, ist die Verwendung eines JOINs. Denn dieses NOT IN oder auch generell so eine Unterabfrage in der WHERE-Klausel, wird sehr langsam, wenn diese Unterabfrage ein sehr große Datenmenge zurückliefert. Da empfiehlt es sich einen JOIN zu verwenden. Wiederum habe ich jetzt hier die Unterabfrage, die mir alle Kundennummern liefert mit dem Interesse "Sport". Nun verwende ich diese Unterabfrage in der FROM-Klausel Und mache einen OUTER JOIN. Um alle herausfiltern zu können, die nicht in dieser Liste enthalten sind. Über die Kundennummer realisiere ich die Join-Bedingung. Und wichtig ist, zusätzlich zur bereits vorhandenen Filtereinschränkung dass das Geschlecht weiblich sein muss, das ist das Kürzel "1". Kommt jetzt die weitere Filterbedingung "AND kdnr IS NULL", die Kundennummer aus "s" ... "s" ist der Aliasname, der Tabellen-Aliasname für meine Unterabfrage für Sport sozusagen ... "s" und "s.kdnr IS NULL". Damit filtern wir wiederum genau all jene heraus, die nicht das Interesse "Sport" haben und deshalb von der Unterabfrage nicht zurückgeliefert werden. und wiederum kommentiere ich die nicht-benötigten Spalten für das Einfügen aus und füge diese mit dieser Anweisung ein. Und wieder kontrollieren wir. Und damit ich das schneller sehe, ergänze ich hier noch eine ORDER BY-Klausel, und sortiere das Ganze nach dem Nachnamen. Und wir kontrollieren. wir haben neun Zeilen, angefangen von der "Petra Deutschmann" bis hinunter zur "Alexandra Zimmer", aber keine "Sabina Kilian" die hier vorkommt. Sie haben also in diesem Übungsbeispiel gesehen, dass eine SELECT, das zum Einfügen von Daten in eine Tabelle verwendet wird, durchaus auch komplexer sein kann. Dass durchaus auch Unterabfragen mit verwendet werden können, die z. B. in der WHERE-Klausel oder auch in Form einer Inline-View in der FROM-Klausel verwendet werden.

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!