SELECT (Transact-SQL)
Ruft Zeilen aus der Datenbank ab und ermöglicht die Auswahl einer oder vieler Zeilen oder Spalten aus einer Tabelle oder aus zahlreichen Tabellen. Die vollständige Syntax der SELECT-Anweisung ist komplex, die Hauptklauseln können jedoch wie folgt zusammengefasst werden:
[ WITH <common_table_expression>]
SELECT select_list [ INTO new_table ]
[ FROM table_source ] [ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
Die Operatoren UNION, EXCEPT und INTERSECT können zwischen Abfragen verwendet werden, um deren Ergebnisse in einem Resultset zu kombinieren oder zu vergleichen.
Syntax
<SELECT statement> ::=
[WITH <common_table_expression> [,...n]]
<query_expression>
[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
[ ,...n ] ]
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } (expression )} [ ,...n ]
[ BY expression [ ,...n ] ]
]
[ <FOR Clause>]
[ OPTION ( <query_hint> [ ,...n ] ) ]
<query_expression> ::=
{ <query_specification> | ( <query_expression> ) }
[ { UNION [ ALL ] | EXCEPT | INTERSECT }
<query_specification> | ( <query_expression> ) [...n ] ]
<query_specification> ::=
SELECT [ ALL | DISTINCT ]
[TOP ( expression ) [PERCENT] [ WITH TIES ] ]
< select_list >
[ INTO new_table ]
[ FROM { <table_source> } [ ,...n ] ]
[ WHERE <search_condition> ]
[ <GROUP BY> ]
[ HAVING < search_condition > ]
Hinweise
Da die SELECT-Anweisung relativ komplex ist, werden ausführliche Syntaxelemente und Argumente nach Klauseln zusammengefasst aufgeführt:
Die Reihenfolge der Klauseln in der SELECT-Anweisung ist von Bedeutung. Jede der optionalen Klauseln kann ausgelassen werden. Wenn sie jedoch verwendet werden, müssen sie in der richtigen Reihenfolge stehen.
SELECT-Anweisungen sind in benutzerdefinierten Funktionen nur dann zulässig, wenn die Auswahllisten dieser Anweisungen Ausdrücke enthalten, die lokalen Variablen der Funktionen Werte zuweisen.
Ein mit der OPENDATASOURCE-Funktion als Servername konstruierter vierteiliger Name kann als Quelltabelle überall dort verwendet werden, wo ein Tabellenname in einer SELECT-Anweisung vorkommen kann.
Für SELECT-Anweisungen, die Remotetabellen einbeziehen, gelten einige Syntaxeinschränkungen. Weitere Informationen finden Sie unter Richtlinien für die Verwendung von verteilten Abfragen.
Verarbeitungsreihenfolge der SELECT-Anweisung
Die folgenden Schritte beschreiben die Verarbeitungsreihenfolge der SELECT-Anweisung.
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE oder WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
Berechtigungen
Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin, der festen Datenbankrollen db_owner und db_datareader und den Besitz der Tabelle. Mitglieder der Rollen sysadmin, db_owner und db_securityadmin sowie der Tabellenbesitzer können Berechtigungen an andere Benutzer übertragen.