SELECT-Klausel (Transact-SQL)
Gibt die Spalten an, die von der Abfrage zurückgegeben werden sollen.
Syntax
SELECT [ ALL | DISTINCT ]
[ TOP ( expression ) [ PERCENT ] [ WITH TIES ] ]
<select_list>
<select_list> ::=
{
| { table_name | view_name | table_alias }.*
| {
[ { table_name | view_name | table_alias }. ]
{ column_name | $IDENTITY | $ROWGUID }
| udt_column_name [ { . | :: } { { property_name | field_name }
| method_name (argument [ ,...n] ) } ]
| expression
[ [ AS ] column_alias ]
}
| column_alias = expression
} [ ,...n ]
Argumente
ALL
Gibt an, dass das Resultset doppelte Zeilen enthalten darf. ALL ist die Standardeinstellung.DISTINCT
Gibt an, dass im Resultset nur eindeutige Zeilen vorkommen dürfen. NULL-Werte werden für das DISTINCT-Schlüsselwort als gleich angesehen.TOP ( expression ) [ PERCENT ] [ WITH TIES ]
Gibt an, dass das Resultset der Abfrage nur eine angegebene erste Gruppe oder einen Prozentsatz von Zeilen zurückgibt. expression kann entweder eine Anzahl oder ein Prozentsatz von Zeilen sein.Aus Gründen der Abwärtskompatibilität wird die Verwendung von TOP expression ohne Klammern in SELECT-Anweisungen unterstützt, jedoch nicht empfohlen. Weitere Informationen finden Sie unter TOP (Transact-SQL).
< select_list >
Die für das Resultset auszuwählenden Spalten. Die Auswahlliste besteht aus einer Reihe von Ausdrücken, die durch Kommas voneinander getrennt sind. Maximal können in der Auswahlliste 4096 Ausdrücke angegeben werden.*
Gibt an, dass alle Spalten aus allen Tabellen und Sichten in der FROM-Klausel zurückgegeben werden sollen. Die Spalten werden wie in der FROM-Klausel angegeben nach Tabellen oder Sichten sortiert sowie in der Reihenfolge zurückgegeben, in der sie in der Tabelle vorhanden sind.table_name | view_name | table_alias.*
Beschränkt den Gültigkeitsbereich von * auf die angegebene Tabelle oder Sicht.column_name
Dies ist der Name einer Spalte, die zurückgegeben werden soll. Kennzeichnen Sie column_name, um einen mehrdeutigen Verweis zu verhindern, der vorkommen kann, wenn zwei Tabellen in der FROM-Klausel Spalten mit dem gleichen Namen enthalten. Beispiel: Die SalesOrderHeader-Tabelle und die SalesOrderDetail-Tabelle in der AdventureWorks2008R2-Datenbank haben beide eine Spalte mit dem Namen ModifiedDate. Wenn beide Tabellen in einer Abfrage zusammengeführt werden, kann das modifizierte Datum der Einträge in SalesOrderDetail in der Auswahlliste als SalesOrderDetail.ModifiedDate angegeben werden.expression
Eine Konstante, eine Funktion oder eine beliebige, durch einen oder mehrere Operatoren verknüpfte Kombination von Spaltennamen, Konstanten und Funktionen oder eine Unterabfrage.$IDENTITY
Gibt die Identitätsspalte zurück. Weitere Informationen finden Sie unter IDENTITY-Eigenschaft (Transact-SQL), ALTER TABLE (Transact-SQL) und CREATE TABLE (Transact-SQL).Falls mehrere Tabellen in der FROM-Klausel eine Spalte mit der IDENTITY-Eigenschaft enthalten, muss $IDENTITY mit dem jeweiligen Tabellennamen gekennzeichnet werden, wie z. B. T1.$IDENTITY.
$ROWGUID
Gibt die ROWGUID-Spalte zurück.Falls mehrere Tabellen in der FROM-Klausel eine Spalte mit der ROWGUIDCOL-Eigenschaft enthalten, muss $ROWGUID mit dem jeweiligen Tabellennamen gekennzeichnet werden, wie z. B. T1.$ROWGUID.
udt_column_name
Der Name einer Spalte des CLR-benutzerdefinierten Typs, die zurückgegeben werden soll.{ . | :: }
Gibt eine Methode, Eigenschaft oder ein Feld eines CLR-benutzerdefinierten Typs an. Verwenden Sie . für eine (nicht statische) Instanzmethode, Eigenschaft oder ein Feld. Verwenden Sie :: für eine statische Methode, Eigenschaft oder ein Feld. Zum Aufrufen einer Methode, Eigenschaft oder eines Felds eines CLR-benutzerdefinierten Typs müssen Sie über die EXECUTE-Berechtigung für den Typ verfügen.property_name
Eine öffentliche Eigenschaft von udt_column_name.field_name
Ein öffentliches Datenelement von udt_column_name.method_name
Eine öffentliche Methode von udt_column_name, die ein oder mehrere Argumente umfassen kann. method_name darf keine Mutatormethode sein.Im folgenden Beispiel werden die Werte für die Location-Spalte ausgewählt, für die der Typ point definiert ist. Die Auswahl erfolgt aus der Cities-Tabelle durch Aufruf einer Methode des Typs mit dem Namen Distance:
CREATE TABLE Cities ( Name varchar(20), State varchar(20), Location point ); GO DECLARE @p point (32, 23), @distance float GO SELECT Location.Distance (@p) FROM Cities;
column_ alias
Dies ist ein alternativer Name, der den Spaltennamen im Abfrageresultset ersetzt. Für eine Spalte mit dem Namen quantity könnte z. B. ein Alias wie Quantity, Quantity to Date oder Qty angegeben werden.Aliasnamen werden auch verwendet, um Namen für die Ergebnisse von Ausdrücken anzugeben, beispielsweise:
USE AdventureWorks2008R2;
GO
SELECT AVG(UnitPrice) AS 'Average Price'
FROM Sales.SalesOrderDetail;
column_alias kann in einer ORDER BY-Klausel verwendet werden. Sie kann jedoch nicht in einer WHERE-, GROUP BY- oder HAVING-Klausel verwendet werden. Falls der Abfrageausdruck Teil einer DECLARE CURSOR-Anweisung ist, kann column_alias nicht in der FOR UPDATE-Klausel verwendet werden.
Hinweise
Als Länge für die in der Auswahlliste enthaltenen Spalten vom Typ text oder ntext wird jeweils die kleinste der folgenden Größen zurückgegeben: die tatsächliche Größe der text-Spalte, die Standardeinstellung für TEXTSIZE für die Sitzung oder die im Code der Anwendung festgelegte Größenbeschränkung. Sie können die Länge des zurückgegebenen Texts für eine Sitzung mit der SET-Anweisung ändern. Standardmäßig ist die Länge von Textdaten, die mit einer SELECT-Anweisung zurückgegeben werden, auf 4.000 Byte begrenzt.
SQL Server Database Engine (Datenbankmodul) löst die Ausnahme 511 aus und führt einen Rollback für die derzeit ausgeführte Anweisung aus, wenn eine der folgenden Situationen auftritt:
Die SELECT-Anweisung erstellt eine Ergebniszeile oder eine Zeile in der temporären Arbeitstabelle, die 8.060 Byte überschreitet.
Die DELETE-, INSERT- oder UPDATE-Anweisung versucht, eine Aktion für eine Zeile durchzuführen, die größer als 8.060 Byte ist.
Ein Fehler tritt auf, wenn eine mit SELECT INTO oder CREATE VIEW erstellte Spalte keinen Spaltennamen besitzt.
Siehe auch