Freigeben über


Entity SQL-Kurzreferenz

Dieses Thema enthält eine Kurzreferenz zu Entity SQL-Abfragen. Die Abfragen in diesem Thema basieren auf dem AdventureWorks Sales-Modell.

Literale

String

Es gibt Zeichenfolgenliterale, die aus Unicode-, und solche, die aus Nicht-Unicode-Zeichen bestehen. Nicht-Unicode-Zeichenfolgen wird ein "N" vorangestellt, beispielsweise N'hello'.

Folgendes ist ein Beispiel eines Unicode-Zeichenfolgenliterals:

'hello'
--same as
"hello"

Ausgabe:

Wert

hello

DateTime

In DateTime-Literalen sind sowohl das Datum als auch die Uhrzeit erforderlich. Es gibt keine Standardwerte.

Beispiel:

DATETIME '2006-12-25 01:01:00.000' 
--same as
DATETIME '2006-12-25 01:01'

Ausgabe:

Wert

12/25/2006 1:01:00 AM

Integer

Ganzzahlliterale können vom Typ Int32 oder Int64 sein.

Beispiel:

--a collection of integers
{1, 2, 3}

Ausgabe:

Wert

1

2

3

Sonstige

Andere von Entity SQL unterstützte Literale sind Guid, Binary, Float/Double, Decimal und null. NULL-Literale werden in Entity SQL als mit allen anderen Typen im Entity Data Model (EDM) kompatibel aufgefasst.

Typkonstruktoren

ROW

ROW (Entity SQL) erstellt einen anonymen, strukturell typisierten (Datensatz-)Wert wie im folgenden Beispiel: ROW(1 AS myNumber, ‘Name’ AS myName).

Beispiel:

SELECT VALUE row (product.ProductID as ProductID, product.Name 
    as ProductName) FROM AdventureWorksEntities.Product AS product

Ausgabe:

ProductID Name

1

Adjustable Race

879

All-Purpose Bike Stand

712

AWC Logo Cap

...

...

MULTISET

MULTISET (Entity SQL) erstellt Auflistungen, z. B.:

MULTISET(1,2,2,3)``--same as-{1,2,2,3}.

Beispiel:

SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)

Ausgabe:

ProductID Name ProductNumber

842

Touring-Panniers, Large

PA-T100

Object

Konstruktor benannter Typen (Entity SQL) erstellt (benannte) benutzerdefinierte Objekte, z. B. person("abc", 12).

Beispiel:

SELECT VALUE AdventureWorksModel.SalesOrderDetail (o.SalesOrderDetailID, o.CarrierTrackingNumber, o.OrderQty, 
o.ProductID, o.SpecialOfferID, o.UnitPrice, o.UnitPriceDiscount, 
o.rowguid, o.ModifiedDate) FROM AdventureWorksEntities.SalesOrderDetail 
AS o

Ausgabe:

SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID

1

4911-403C-98

1

776

2

4911-403C-98

3

777

...

...

...

...

Verweise

REF

REF erstellt einen Verweis auf eine Entitätstypinstanz. Die folgende Abfrage gibt beispielsweise einen Verweis auf jede "Order"-Entität in der "Orders"-Entitätenmenge zurück: select ref(o) from LOB.Orders as o. Im folgenden Beispiel wird der Eigenschaftsextrahierungsoperator (.) für den Zugriff auf eine Eigenschaft einer Entität verwendet. Bei der Verwendung des Eigenschaftsextraktionsoperators wird der Verweis automatisch dereferenziert.

Beispiel:

SELECT VALUE REF(p).Name FROM 
    AdventureWorksEntities.Product as p

Ausgabe:

Wert

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

DEREF

DEREF dereferenziert einen Verweiswert und erstellt das Ergebnis dieser Dereferenzierung. Die folgende Abfrage erstellt beispielsweise die "Order"-Entitäten für jede "Order" in der "Orders"-Entitätenmenge: select deref(o2.r) from (select ref(o) as r from LOB.Orders as o) as o2.

Beispiel:

SELECT VALUE DEREF(REF(p)).Name FROM 
    AdventureWorksEntities.Product as p

Ausgabe:

Wert

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

CREATEREF UND KEY

CREATEREF erstellt einen Verweis, der einen Schlüssel übergibt. KEY extrahiert den Schlüsselteil eines Ausdrucks mit Typverweis.

Beispiel:

SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID))) 
    FROM AdventureWorksEntities.Product as p

Ausgabe:

ProductID

980

365

771

...

Funktionen

Kanonische Funktionen

Der Namespace für kanonische Funktionen ist Edm, wie in Edm.Length("string"). Der Namespace muss nur dann angegeben werden, wenn ein anderer Namespace importiert wurde, der eine Funktion mit dem gleichen Namen wie eine kanonische Funktion enthält. Wenn zwei Namespaces über die gleiche Funktion verfügen, sollte der Benutzer den vollständigen Namen angeben.

Beispiel:

SELECT Length(c. FirstName) As NameLen FROM 
    AdventureWorksEntities.Contact AS c 
    WHERE c.ContactID BETWEEN 10 AND 12

Ausgabe:

NameLen

6

6

5

Microsoft-anbieterspezifische Funktionen

Microsoft-anbieterspezifische Funktionen befinden sich im SqlServer-Namespace.

Beispiel:

SELECT SqlServer.LEN(c.EmailAddress) As EmailLen FROM 
    AdventureWorksEntities.Contact AS c WHERE 
    c.ContactID BETWEEN 10 AND 12

Ausgabe:

EmailLen

27

27

26

Namespaces

USING gibt in einem Abfrageausdruck verwendete Namespaces an.

Beispiel:

using SqlServer; LOWER('AA');

Ausgabe:

Wert

aa

Paging

Paging kann durch Deklarieren einer SKIP-Unterklausel und einer LIMIT-Unterklausel in der ORDER BY (Entity SQL)-Klausel erreicht werden.

Beispiel:

SELECT c.ContactID as ID, c.LastName as Name FROM 
    AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;

Ausgabe:

ID Name

10

Adina

11

Agcaoili

12

Aguilar

Gruppierung

GROUPING BY gibt Gruppen an, in die von einem Abfrageausdruck (SELECT) zurückgegebene Objekte platziert werden sollen.

Beispiel:

SELECT VALUE name FROM AdventureWorksEntities.Product as P 
    GROUP BY P.Name HAVING MAX(P.ListPrice) > 5

Ausgabe:

name

LL Mountain Seat Assembly

ML Mountain Seat Assembly

HL Mountain Seat Assembly

...

Navigation

Der Beziehungsnavigationsoperator ermöglicht die Navigation der Beziehung von einer Entität (an einem Ende) zu einer anderen Entität (am anderen Ende). NAVIGATE wird der Beziehungstyp als <Namespace>.<Beziehungstypname> qualifiziert übergeben. Navigate gibt Ref<T> zurück, wenn die Kardinalität des anderen Endes "1" ist. Wenn die Kardinalität des anderen Endes "n" ist, wird die Collection<Ref<T>> zurückgegeben.

Beispiel:

SELECT a.AddressID, (SELECT VALUE EREF(v) FROM 
    NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v) 
    FROM AdventureWorksEntities.Address AS a

Ausgabe:

AddressID

1

2

3

...

SELECT VALUE UND SELECT

SELECT VALUE

Entity SQL stellt die SELECT VALUE-Klausel bereit, um die implizite Zeilenkonstruktion unnötig zu machen. In einer SELECT VALUE-Klausel kann nur ein Element angegeben werden. Wenn diese Klausel verwendet wird, wird kein Zeilen-Wrapper für die Elemente in der SELECT-Klausel erstellt, und eine Auflistung der gewünschten Form kann erstellt werden, beispielsweise SELECT VALUE a.

Beispiel:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product as p

Ausgabe:

Name

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

SELECT

Entity SQL stellt auch den Zeilenkonstruktor zum Erstellen beliebiger Zeilen bereit. SELECT werden ein oder mehrere Elemente in der Projektion übergeben, und das Ergebnis ist ein Datensatz mit Feldern, z. B.: SELECT a, b, c.

Beispiel:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Ausgabe:

Name ProductID

Adjustable Race

1

All-Purpose Bike Stand

879

AWC Logo Cap

712

...

...

CASE-AUSDRUCk

Der case-Ausdruck wertet eine Reihe von booleschen Ausdrücken aus, um das Ergebnis zu ermitteln.

Beispiel:

CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END

Ausgabe:

Wert

TRUE

Siehe auch

Konzepte

Entity SQL-Referenz
Übersicht über Entity SQL