2016-08-03 28 views
-2

Bedeuten diese zwei SQL-Anweisungen dasselbe?Korrekte SQL-Syntax eines Tabellenalias?

Statement 1: SELECT * FROM table1 AS t1 WHERE 1 
Statement 2: SELECT * FROM table1 t1 WHERE 1 

Und ist die zweite Aussage korrekt in MySQL/MariaDB und SQL-Standard?

+0

Beide sehen für mich richtig aus – RiggsFolly

+0

'as' ist optional. Darunter oder nicht ist eine persönliche Entscheidung, vorbehaltlich der Meinung. Ich stecke es immer rein, aber das bin nur ich. –

+0

Ja, sie sind identisch. 'AS' ist ein optionales Schlüsselwort. – Siyual

Antwort

-2

Ja, sie meinen das Gleiche. Beide sind richtig.

+0

Schauen Sie sich @ BillKarwin Antwort an. Das ist eine Antwort, das ist ein Kommentar! – RiggsFolly

+0

Diese Art von Antwort zieht Downvotes ___ Ich habe nicht DV___ und wenn das passiert, werden Sie rep Punkte verlieren und länger dauern, um 50 Wiederholungen zu bekommen. Bis Sie 50 Wiederholungen haben, halten Sie sich an Fragen, die gut gestellt und daher leicht beantwortet werden können, ohne dass eine Klärung notwendig ist. – RiggsFolly

+0

@RiggsFolly: Die billKarvin Antwort ist eigentlich falsch (oder ist eine richtige Antwort auf eine andere Frage ;-). Es geht um Spaltenaliasnamen, nicht um Tabellenakiases (Korrelationsnamen) – wildplasser

-1

Ja, zweite Aussage stimmt! Ich habe es an meinem Ende getestet. Aber, Sie sollten die erste Aussage verwenden!

+0

Hahaha, habe mich nur zum Lachen gebracht, dass du das erste getestet hast, aber auf OP mit dem zweiten bestanden hast. Sie sind identische Aussagen. Komisch! – Anand

+0

Sehen Sie sich @ BillKarwin Antwort an. Das ist eine Antwort, das ist ein Kommentar! – RiggsFolly

+0

Diese Art von Antwort zieht Downvotes ___ Ich habe nicht DV___ und wenn das passiert, werden Sie rep Punkte verlieren und länger dauern, um 50 Wiederholungen zu bekommen. Bis Sie 50 Wiederholungen haben halten Sie sich an Fragen, die gut gestellt sind und daher leicht beantwortet werden können, ohne Klärung zu benötigen – RiggsFolly

2

Dies wird in dem SQL-99-Standard abgedeckt: "Tabelle alias" https://mariadb.com/kb/en/sql-99/select-statement/

Korrelationsname ist die richtige Terminologie für das, was Menschen häufig einen Aufruf

<Table reference> ::= 
[ ONLY ]{<Table name> | <query name>} [ [ AS ] <Correlation name> [ (<derived Column list>) ] ] | 
<Table subquery> [ AS ] <Correlation name> [ (<derived Column list>) ] | 
<joined Table> | 
LATERAL (<query expression>) [ AS ] <Correlation name> [ (<derived Column list>) ] 

Beachten Sie das Schlüsselwort AS ist innerhalb seiner eigenen eckigen Klammern, was darauf hinweist, dass es optional ist, auch wenn Sie einen Korrelationsnamen für die Tabelle oder Unterabfrage erklären.

Dies ist das MySQL-Handbuch für SELECT gefunden:

Eine Tabelle Referenz tbl_name AS alias_name oder tbl_name alias_name aliased werden kann mit ...

Sonderbare Lappalien: Aus irgendeinem Grund mir unbekannt Oracle nicht Erlaube das Schlüsselwort AS für Korrelationsnamen. Stelle dir das vor.


Dies gilt auch für AS, die für einen Spaltenalias verwendet werden.

Sie können die optionale AS name-Klausel verwenden, um einen Namen für einen Column-Ausdruck anzugeben. Es wird verwendet, um dieses Ergebnis für die gesamte SELECT-Anweisung zu identifizieren. Die erforderliche Syntax für eine Auswahlliste lautet wie folgt.

Okay, das ist nicht ganz klar, dass das Schlüsselwort AS optional ist. Aber die Syntax Referenz zeigt folgende:

SELECT [ ALL | DISTINCT ] Column list 

Column list ::= 
    expression [ [ AS ] <Column name> ] [ , ... ] | 
    * 

Wieder im MySQL Handbuch SELECT:

Das Schlüsselwort AS optional ist, wenn ein mit einer Kennung select_expr Aliasing.

Es gibt ein paar andere Fälle, in denen SQL-Schlüsselwörter optional sind. Zum Beispiel sind LEFT JOIN und LEFT OUTER JOIN identische Operationen.

Das bekommen Sie mit einer vom Ausschuss entworfenen Sprache.

+0

Die Frage war über Tabellenaliasnamen (Korrelationsnamen) – wildplasser

+0

@wildplasser, danke, das habe ich übersehen. Ich habe meine Antwort aktualisiert. –

Verwandte Themen