SQL Grundkurs 1: Die Sprache erlernen

Tabellenaliasnamen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Werden mehrere Tabellen in einer Anweisung verwendet, müssen zumindest gleichnamige Spalten mit den Namen der Herkunftstabelle angegeben werden. Besser ist es jedenfalls, das bei jeder Spalte zu tun. Damit die Anweisung dabei aber noch lesbar und übersichtlich bleibt, setzen Sie Tabellenaliasnamen ein.

Transkript

Wie Sie damit umgehen, wenn es Gleichheit bei Spaltennamen in mehreren Tabellen gibt, sehen Sie in diesem Video. Für dieses Beispiel verwende ich meine Tabellen "Kunden" und "Kundeninteressen". Ganz kurz vielleicht zur Klärung, in der Tabelle "Kunden" finden wir unsere Kundeninformationen. In der Tabelle "Interessen", finden wir, welche Interessensgebiete wir verwalten. Zu einem Kürzel gibt es jeweils einen langen Text. In der Tabelle "Kundeninteressen" erfolgt die Zuordnung zwischen diesen beiden. D.h., hier erfolgt eine Zuordnung zwischen Kundennummer und diesem Interessenscode, und dann weiß ich, der Kunde mit der Nummer 121 hat das Interesse mit dem Kürzel BAU, und derselbe Kunde hat auch das Interesse mit dem Kürzel HWE. Wenn wir uns das ganz kurz in dem Diagramm ansehen, dann sehen wir einerseits unsere Kunden und unsere Interessen, und hier die zwei Beziehungen in dieser Zuordnungstabelle. Man sieht hier auch eine Auflösung einer sogenannten "M zu N Beziehung", weil jeder Kunden mehrere Interessen haben kann, und es zu jedem Interesse mehrere Kundengeben kann. Was wir hier auch sehen ist, dass wir hier Namensgleichheit in der Spalte "KdNr" haben: Kundennummer. Wenn wir jetzt also die Kunden und die Kundeninteressen "joinen", müssen wir darauf achten, dass hier diese zwei Spalten einen gleichlautenden Namen haben. Was müssen wir da berücksichtigen? Ich beginne einmal die Anweisung mit der Tabelle "Kunden". Ich gehe mit der Anweisung "Inner Join" ganz gerne in eine neue Zeile, um die Übersicht zu behalten, und ergänze nun die zweite Tabelle, die Tabelle "Kundeninteressen." Jetzt haben wir gesehen, die zwei Spalten haben den gleichen Namen, also müsste ich theoretisch schreiben: "KdNr = KdNr". Außerdem ergänze ich meine "Select"-Klausel mit der Kundennummer, dem Nachnamen, dem Vornamen, und ich nehme das Interessenskürzel. Den Langext, der in der dritten Tabelle steht, den lassen wir vorläufig einmal weg. Ich ergänze hier noch einen Alias-Namen, und natürlich auch eine Sortierung. Wenn wir diese Anweisungen ausführen werden, werden wir eine Fehlermeldung bekommen. Sie erkennen schon im Editor anhand dieser roten Wellenlinie unter den drei Einträgen "KdNr", dass hier etwas nicht stimmt. Wenn ich mich mit der Maus darüber bewege, sehen Sie "Mehrdeutiger Spaltenname KdNr". Das steht auch in der Fehlermeldung, die ich vom Server erhalte, wenn ich die Anweisung ausführe: "Mehrdeutiger Spaltenname". Das Problem ist also, in dem Moment, wo wir mehr als eine Tabelle verwenden, kann es natürlich vorkommen, dass es Gleichheit in den Spaltennamen gibt. Was müssen wir in diesem Fall tun? Ähnlich wie in einer Schulklasse oder Abteilung in einer Firma, wenn es mehrere gleiche Vornamen gibt. Man muss den Nachnamen zusätzlich ergänzen, um eindeutig zu definieren, wen man meint. Dasselbe ist hier, wir müssen also hier die Herkunft ergänzen. Aber, zumindest dann müssen wir das tun, wenn es Namensgleichheit gibt. Ich kopiere mir also diese Anweisung hierher, und ergänze jetzt jeweils vor den betroffenen Spalten, woher sie kommen. Das heißt, vor der Kundennummer hier ergänze ich, dass ich diese aus der Kundentabelle z.B. haben möchte. Dasselbe hier hinten, einmal aus der Tabelle "Kundeninteresse" die Kundennummer, und einmal aus der Tabelle "Kunden" die Kundennummer. Damit haben wir jetzt bei jeder Spalte eindeutig definiert, woher sie kommt. Wenn ich diese Anweisung nun ausführe, bekommen wir nun das gewünschte Ergebnis. Wir sehen hier einerseits die Kundennummer, den Nachnamen und den Vornamen, und andererseits aus der zweiten Tabelle, das jeweilige Interessenskürzel. Damit ist das Ergebnis soweit korrekt. In der Praxis ist es allerdings sinnvoller, nicht nur bei den Spalten, wo es Namensgleichheit gibt, den Tabellennamen zu ergänzen, sondern dies bei jeder Spalte zu tun. Sie unterstützen damit das System beim Ausführen der Anweisung. Das würde bedeuten, ich habe mir jetzt hier die Anweisung kopiert, dass ich nicht nur bei der Kundennummer, sondern auch beim Nachnamen, beim Vornamen und hier beim Nachnamen den Tabellennamen voranstelle, als auch natürlich auch hier beim Interessenskode angebe, dass er aus der Tabelle "Kundeninteressen" zu nehmen ist. Sie sehen deutlich, dass die Lesbarkeit der Anweisung darunter leidet. Sie können natürlich hier noch versuchen, zu optimieren, indem Sie zum Beispiel zusätzliche Zeilenschaltungen einbauen oder Einrückungen, aber dennoch ist die Lesbarkeit beeinträchtigt, aus meiner Sicht. Das Ergebnis ändert sich natürlich nicht, aber Sie haben damit das System unterstützt, effizienter diese Anweisung auszuführen. Diese Variante erscheint uns doch etwas unbefriedigend, nicht nur, dass es mehr Arbeit ist, das kann man optimieren, indem man über die Zwischenablage die Tabellennamen voransetzt, aber die Anweisungen werden sehr umfangreich und unübersichtlich. Dafür gibt es eine Lösung, und das ist die Optimalvariante aus meiner Sicht, nämlich den Einsatz sogenannter "Tabellen Alias-Namen". Was bedeutet das? Sie kennen ja bereits "Alias-Namen" im Zusammenhang mit einzelnen Spalten. Man kann jetzt auch "Alias-Namen" für Tabellen vergeben. Diese "Alias-Namen" haben allerdings keine Außenwirkung, so wie das "Spalten Alias-Namen" haben, sondern wirken nur nach innen, innerhalb der Anweisung. Das Ziel dieser "Tabellen Alias-Namen" ist es, die Anweisungen wieder besser lesbar und übersichtlicher zu gestalten. Diese "Alias-Namen" werden direkt hinter den Tabellennamen ergänzt. Sinnvollerweise sind diese möglichst kurz, im Idealfall bestehen sie nur aus nur einem Buchstaben, denn dann, wenn Sie nur einen Buchstaben verwenden, können Sie die Vorteile optimal ausnutzen. Sie müssen dabei lediglich darauf achten, dass innerhalb der Anweisung diese "Alias-Namen" eindeutig sind. Das heißt, wenn Sie nur einen Buchstaben verwenden, z.B. hier "K" für Kunden und "I" für Kundeninteressen. Ich empfehle Ihnen auch, möglichst sprechende "Alias-Namen" zu verwenden. Das bedeutet nicht, dass Sie jetzt hier einfach für die erste Tabelle "A" und für die zweite "B" vergeben. Weil zwischen "A" und "Kunden", und "B" und "Interessen" haben Sie keinen Bezug. Wenn Sie hingegen "I" für "Interessen", und "K" für "Kunden" vergeben, dann ist das natürlich sprechend. Sie merken, in dem Moment, wo ich den "Alias-Namen" vergebe, hier innerhalb der Anweisung, wird der ursprüngliche Tabellenname überlagert, und deshalb scheint es so, als würden diese anderen Spalten alle keine korrekte Herkunft aufweisen. Wenn ich diese Anweisung jetzt so ausführe, kriege ich auch jede Menge Fehlermeldungen, dass er diese Spalten nicht kennt. Denn innerhalb der Anweisung überlagert nun der Tabellen "Alias-Name" den ursprünglichen Tabellennamen, und dieser ist nicht mehr verwendbar. Ich ersetze jetzt also den Tabellennamen, inklusive Schema natürlich, durch den entsprechenden "Alias-Namen". Da dieser "Alias-Name" im Idealfall nur aus einem Buchstaben besteht, sollte sich das nicht ausgehen, weil Sie mehrere Tabellen mit gleichen Anfangsbuchstaben verwenden, dann können Sie auf zwei bis drei Buchstaben erweitern, aber natürlich sollten diese so kurz wie möglich sein. Hier tausche ich auch noch "Wawi Kunden" durch "K" aus, genauso wie ich hier die "Kundeninteressen" durch das Kürzel "I" ersetze. Und Sie sehen schon, wie viel kürzer und besser lesbar diese Anweisung nun wird. Unter Umständen könnte man hier sogar die Zeilenumbrüche, wenn Ihnen das so besser gefällt, wieder entfernen, natürlich können Sie diese auch beibehalten. Nun haben wir hier eine saubere Anweisung, die kurz und übersichtlich ist, und voll die Anforderung erfüllt, dass Sie bei jeder Spalte angegeben haben, woher sie stammt. Warum habe ich hier bei "Interesse" nichts angegeben? Achtung, "Interesse" ist ja bereits ein Spalten "Alias-Name", der für die Spalte "i.incode" definiert ist. Hier ist ja quasi die Tabellenherkunft schon inkludiert. Würde ich hier vor "Interesse" noch einmal einen "Tabellen Alias-Namen" ergänzen, würde diese Spalte fälschlicherweise als echte Spalte aus dieser Tabelle interpretiert werden. Diese gäbe es ja nicht, und dann hätten wir wieder eine Fehlermeldung. Deshalb darf hier kein Präfix für einen Tabellennamen verwendet werden. Zusammenfassend möchte ich noch einmal erwähnen, sobald Sie mehr als eine Tabelle in einer Anweisung verwenden, sollten Sie sinnvollerweise bei jeder Spalte die Herkunft angeben. Sinnvollerweise realisieren Sie das nicht durch den gesamten Tabellennamen, inklusive Schema, sondern über einen "Alias Namen", den Sie innerhalb der Anweisung definieren. Da diese Kürzel nur innerhalb der Anweisung wirken, müssen diese Kürzel auch nur innerhalb dieser Anweisung eindeutig sein. Wichtige Voraussetzung ist allerdings, wenn Sie nicht bei jeder Spalte der Herkunft hergeben, dass Sie es zumindest bei jenen Spalten tun, bei denen es keine Eindeutigkeit im Namen gibt. Diese letzte Form ist natürlich auch kompatibel bei allen anderen Systemen, Das heißt zum Abschluss, nochmal kurz, wechsle ich auf unseren Oracle-Editor, und dieselbe Anweisung ausführe, bekommen wir ein genauso gültiges Ergebnis, wie wir das auch für My SQL mit dem entsprechenden Editor erzielen können.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

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!