Sie können Tabellenaliasnamen in SQL festlegen, indem Sie den Bezeichner direkt nach dem Tabellennamen eingeben.
SELECT * FROM table t1;
Sie können sogar das Schlüsselwort verwenden AS
, um den Alias anzugeben.
SELECT * FROM table AS t1;
Was ist der Unterschied zwischen ihnen, wenn überhaupt?
Ich sehe, dass alte DBA-Leute dazu neigen, Aussagen ohne zu schreiben AS
, aber die meisten neuen Tutorials verwenden sie.
Update: Ich weiß, was der Zweck von Tabellen- und Spaltenaliasnamen ist. Ich bin gespannt, was der Grund dafür ist, ein separates Schlüsselwort zum Festlegen von Aliasen zu haben, während es auch ohne dieses funktioniert.
CREATE PROC Test @Param1 INT AS SELECT @Param1
Antworten:
Es gibt keinen Unterschied zwischen beiden obigen Aussagen. AS ist nur eine explizitere Art, den Alias zu erwähnen
quelle
Jeder, der vor mir geantwortet hat, hat Recht. Sie verwenden es als Alias-Verknüpfungsname für eine Tabelle, wenn Sie lange Abfragen oder Abfragen mit Verknüpfungen haben. Hier sind einige Beispiele.
Beispiel 1
Beispiel 2
Beispiel 3 Es wird empfohlen, das Schlüsselwort AS zu verwenden, und es wird sehr empfohlen, aber es ist möglich, dieselbe Abfrage ohne eines durchzuführen (und das tue ich oft).
Wie Sie sehen, habe ich im letzten Beispiel das Schlüsselwort AS weggelassen. Und es kann als Alias verwendet werden.
Beispiel 4
Ausgabe von Beispiel 4
quelle
Wenn Sie sich nicht sicher sind, welche Syntax Sie wählen sollen, insbesondere wenn es nicht viel zu trennen scheint, lesen Sie ein Buch über Heuristiken. Soweit ich weiß, ist das einzige Heuristikbuch für SQL "Joe Celkos SQL-Programmierstil":
Auf diese Weise können Sie Celko die Schuld geben, wenn Ihr Team die Convention nicht mag - ich weiß, dass ich das tue;)
UPDATE 1: IIRC Oracle hat das
AS
Schlüsselwort (vorhergehender Korrelationsname) lange Zeit nicht unterstützt , was möglicherweise erklärt, warum einige Oldtimer es nicht gewöhnlich verwenden.UPDATE 2: Der Begriff "Korrelationsname" ist zwar vom SQL-Standard verwendet, aber unangemessen. Das zugrunde liegende Konzept ist das einer ' Bereichsvariablen '.
UPDATE 3: Ich habe gerade noch einmal gelesen, was Celko geschrieben hat und er liegt falsch: Die Tabelle wird nicht umbenannt! Ich denke jetzt:
quelle
Das
AS
Schlüsselwort besteht darin, Ihrer Datenbanktabelle oder der Tabellenspalte einen ALIAS- Namen zu geben . In Ihrem Beispiel sind beide Anweisungen korrekt, aber es gibt Umstände, unter denen eine AS-Klausel erforderlich ist (obwohl derAS
Operator selbst optional ist), zIn diesem Fall hat die
Employee
Tabelle einesalary
Spalte und wir wollen nur das Doppelte des Gehalts mit einem neuen NamenDouble Salary
.Entschuldigung, wenn meine Erklärung nicht wirksam ist.
Update basierend auf Ihrem Kommentar, Sie haben Recht, meine vorherige Aussage war ungültig. Der einzige Grund, an den ich denken kann, ist, dass die
AS
Klausel in der SQL-Welt schon lange existiert und aus Gründen der Abwärtskompatibilität in das heutige RDMS integriert wurde.quelle
AS
ist auch in diesem Fall nicht erforderlich oder erforderlich. Versuchen Sie esSELECT 1 + 1 "result"
.Die Verwendung ist offensichtlicher, wenn Sie nicht 'SELECT *' verwenden (was eine schlechte Angewohnheit ist, aus der Sie herauskommen sollten):
quelle
Es ist eine formale Methode, einen Korrelationsnamen für eine Entität anzugeben, damit Sie ihn problemlos in einem anderen Teil der Abfrage adressieren können.
quelle
In
AS
diesem Fall handelt es sich um ein optionales Schlüsselwort, das in ANSI SQL 92 definiert ist, um einen<<correlation name>
allgemein als Alias für eine Tabelle bekannten Schlüsselwort zu definieren .Es scheint eine bewährte Methode zu sein, das
AS
Schlüsselwort NICHT für Tabellenaliasnamen zu verwenden, da es von einer Reihe häufig verwendeter Datenbanken nicht unterstützt wird.quelle
as
Schlüsselwort für Tabellenaliasnamen nicht unterstützt .In den frühen Tagen von SQL wurde es als Lösung für das Problem des Umgangs mit doppelten Spaltennamen ausgewählt (siehe Hinweis unten).
So leihen Sie eine Anfrage von einer anderen Antwort aus:
Die Spalte
ProductID
(und möglicherweise andere) ist beiden Tabellen gemeinsam, und da die Syntax der Verknüpfungsbedingung einen Verweis auf beide erfordert, bietet die 'Punktqualifizierung' eine Begriffsklärung.Die bessere Lösung war natürlich, niemals doppelte Spaltennamen zuzulassen! Glücklicherweise, wenn Sie die neuere
NATURAL JOIN
Syntax verwenden, wird die Notwendigkeit für die BereichsvariablenP
undO
verschwindet:Aber warum ist das
AS
Schlüsselwort optional? Ich erinnere mich an eine persönliche Diskussion mit einem Mitglied des SQL-Standardausschusses (entweder Joe Celko oder Hugh Darwen), dass sie sich daran erinnerten, dass zum Zeitpunkt der Definition des Standards das Produkt eines Anbieters (Microsoft?) Die Aufnahme und eines anderen Anbieters die Aufnahme erforderte Das Produkt (Oracle?) musste weggelassen werden. Der gewählte Kompromiss bestand darin, es optional zu machen. Ich habe kein Zitat dafür, du glaubst mir entweder oder nicht!In den frühen Tagen des relationalen Modells schien das Kreuzprodukt (oder Theta-Join oder Equi-Join) von Beziehungen, deren Überschriften nicht disjunkt sind, eine Beziehung mit zwei gleichnamigen Attributen zu erzeugen; Codds Lösung für dieses Problem in seinem relationalen Kalkül war die Verwendung der Punktqualifikation, die später in SQL emuliert wurde (später wurde erkannt, dass die sogenannte natürliche Verknüpfung ohne Verlust primitiv war, dh die natürliche Verknüpfung kann alle Theta-Verknüpfungen und ersetzen sogar Kreuzprodukt.)
Quelle: Business System 12, Notizen zu Folien der Präsentation, die Hugh Darwen auf dem TTM Implementers 'Workshop der University of Northumbria vom 2. bis 3. Juni 2011 gehalten hat
quelle
AS
Schlüsselwort optional ist (offensichtlich ohne Zitierweise!) Aktualisiert . Hugh ging vor einigen Jahren in den Ruhestand. Ich denke, Celko könnte noch aktiv sein - würden seine Erinnerungen Gewicht hinzufügen? Beweise und Papierspur existieren einfach nicht :(Wenn Sie beispielsweise eine Abfrage mit dem Abfrageeditor in SQL Server 2012 entwerfen, erhalten Sie Folgendes:
Das Entfernen des AS macht jedoch keinen Unterschied wie im Folgenden:
In diesem Fall ist die Verwendung von AS überflüssig, wird jedoch an vielen anderen Stellen benötigt.
quelle