Ich habe gerade auf NATURAL JOIN / USING - SQL92-Funktionen gelesen, die (leider?) im aktuellen Repertoire von SQL Server fehlen.
Hat jemand von einem DBMS, das diese unterstützt, zu SQL Server (oder einem anderen nicht unterstützenden DBMS) - waren sie so nützlich wie sie klingen, oder eine Dose Würmer (was auch möglich klingt!)?
Ich benutze niemals NATURAL JOIN
, weil ich die Möglichkeit nicht mag, dass der Join etwas tun kann, was ich nicht beabsichtige, nur weil ein Spaltenname in beiden Tabellen existiert.
Ich verwende gelegentlich die USING
Join-Syntax, aber genauso oft stellt sich heraus, dass ich eine komplexere Join-Bedingung benötige, als USING
unterstützen kann, also wandle ich sie in die äquivalente ON
-Syntax um.
Würdest du ein DBMS betrachten, das wirklich relational ist ?:
in Tutorial D [wirklich relational Sprache], der einzige "Join" -Operator ist JOIN genannt, und es bedeutet "natürlich mach mit ... "Es sollte keine andere Art geben of join ... Wenige Leute hatten die Erfahrung mit einem richtigen relationale Sprache. Von denen, die Ich vermute stark, dass keiner von Sie beschwerten sich über einige empfundene Unannehmlichkeiten bei der Paarung Spalten nach ihren Namen
Quelle: Die Bedeutung von Spaltennamen "von Hugh Darwen
Verwandte SO Frage: ist NATURAL JOIN besser als SELECT von WHERE in Bezug auf die Leistung?
Ein NATÜRLICHER JOIN ist keine praktische Abkürzung: es ist geradezu gefährlich. Es ist ziemlich selten in DBMS.
VERWENDUNG ist explizit, aber angesichts seiner Einschränkungen können Sie es nicht überall verwenden, also wäre ON konsistent, nein?
Ich sehe den Wert der USING- oder NATURAL-Syntax nicht. Wie Sie festgestellt haben, wird nur ON konsequent implementiert, so dass es am besten aus Sicht der Portabilität ist.
Explizit ist auch besser für die Wartung, außerdem können die Alternativen zu begrenzt sein, um mit Situationen umzugehen. Ich würde auch bevorzugen, dass meine Codebasis konsistent ist.
Es ist eine Frage der Bequemlichkeit. Nicht unentbehrlich , aber es sollte seinen Platz haben, zum Beispiel bei der interaktiven Abfrage (jeder Tastendruck bringt uns näher an RSI heran) oder einige einfache Fälle von handgeschriebenem SQL selbst im Produktionscode (ja, das habe ich geschrieben. Und sogar JOIN USING
in seriösem Code gesehen, geschrieben von weisen Programmierern außer mir selbst. Aber ich schweife ab).
Ich habe diese Frage gefunden, als ich nach der Bestätigung suchte, dass SS diese Funktion vermisst, und ich habe sie bekommen. Ich wundere mich nur über die Menge an Hass gegen diese Syntax, die ich dem Sauren Traubensyndrom zuschreibe. Ich fühle mich belustigt, wenn ich mit einem herablassenden Ton belehrt werde Süßigkeiten (sprich: syntaktischer Zucker) ist schlecht für deine Gesundheit. Du brauchst es sowieso nicht.
Was in der JOIN USING
-Syntax schön ist, ist, dass es nicht nur auf Spaltennamen , sondern auch auf Spaltenalias , zum Beispiel:
Ich stimme nicht "Join using wäre besser, wenn nur (...)" . Oder das Argument, dass Sie möglicherweise komplexere Bedingungen benötigen. Aus einem anderen Blickwinkel, warum JOIN ON
verwenden? Warum nicht rein sein und alle Bedingungen in die WHERE
-Klausel verschieben?
Ich könnte jetzt verrückt werden und streiten, wie dies die sauberste Art ist, einen Join auszudrücken, und Sie können sofort anfangen, weitere Bedingungen in der Where-Klausel hinzuzufügen, die Sie sowieso sowieso brauchen, bla bla bla ...
Du solltest diese spezielle Syntax nicht zu sehr vermissen, aber es gibt nichts, worüber du glücklich sein könntest, wenn du es nicht hast ( "Puh, das war knapp. So gut, dass ich nicht VERBINDEN von Schmerz ").
Also, während ich persönlich JOIN ON
99% der Zeit nutze, fühle ich keine Schadenfreude, wenn es keine JOIN USING
oder NATURAL JOIN
gibt.
Tags und Links sql sql-server tsql