Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält eine Kurzübersicht zu Sql-Entitätsabfragen. Die Abfragen in diesem Thema basieren auf dem AdventureWorks Sales-Modell.
Literale
Schnur
Es gibt Zeichenfolgenliterale, die aus Unicode-, und solche, die aus Nicht-Unicode-Zeichen bestehen. Unicode-Zeichenfolgen werden mit N vorangestellt. Beispiel: N'hello'.
Im Folgenden ist ein Beispiel für ein nicht-Unicode-Zeichenfolgenliteral abgebildet:
'hello'
--same as
"hello"
Ausgabe:
| Wert |
|---|
| Hallo |
Datum/Uhrzeit
In DateTime-Literalen sind sowohl Datums- als auch Uhrzeitteile obligatorisch. 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 Uhr |
Ganze Zahl
Ganzzahlige Literale können vom Typ Int32 (123), UInt32 (123U), Int64 (123L) und UInt64 (123UL) sein.
Beispiel:
--a collection of integers
{1, 2, 3}
Ausgabe:
| Wert |
|---|
| 1 |
| 2 |
| 3 |
Andere
Andere Literale, die von Entity SQL unterstützt werden, sind Guid, Binary, Float/Double, Decimal und null. Nullliterale in Entity SQL gelten als kompatibel mit jedem anderen Typ im konzeptionellen Modell.
Typkonstruktoren
RUDERN
ROW erstellt einen anonymen, strukturell typierten (Datensatz)-Wert wie in: 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:
| Produkt-ID | Name |
|---|---|
| 1 | Anpassbares Rennen |
| 879 | All-Purpose Fahrradständer |
| 712 | AWC-Logo-Kappe |
| ... | ... |
MULTIMENGE
MULTISET erstellt Sammlungen, 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:
| Produkt-ID | Name | Produktnummer | … |
|---|---|---|---|
| 842 | Touren-Pannier, Groß | PA-T100 | … |
Objekt
Benannter Typ-Konstruktor konstruiert 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 | Sendungsverfolgungsnummer | Bestellmenge | Produkt-ID | ... |
|---|---|---|---|---|
| 1 | 4911-403C-98 | 1 | 776 | ... |
| 2 | 4911-403C-98 | 3 | 777 | ... |
| ... | ... | ... | ... | ... |
Verweise
SCHIRI
REF erstellt einen Verweis auf eine Entitätstypinstanz. Zum Beispiel gibt die folgende Abfrage Verweise auf jede Auftrag-Entität im Auftrag-Entitätssatz zurück:
SELECT REF(o) AS OrderID FROM Orders AS o
Ausgabe:
| Wert |
|---|
| 1 |
| 2 |
| 3 |
| ... |
Im folgenden Beispiel wird der Eigenschaftenextraktionsoperator (.) verwendet, um auf eine Eigenschaft einer Entität zuzugreifen. Wenn der Eigenschaftenextraktionsoperator verwendet wird, wird der Verweis automatisch dereferenziert.
Beispiel:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Ausgabe:
| Wert |
|---|
| Anpassbares Rennen |
| All-Purpose Fahrradständer |
| AWC-Logo-Kappe |
| ... |
DEREF
DEREF leitet einen Bezugswert ab und erzeugt das Ergebnis dieser Ableitung. Die folgende Abfrage erzeugt z. B. die Order-Entitäten für jede Bestellung im Entitätssatz "Orders": 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 |
|---|
| Anpassbares Rennen |
| All-Purpose Fahrradständer |
| AWC-Logo-Kappe |
| ... |
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:
| Produkt-ID |
|---|
| 980 |
| 365 |
| 771 |
| ... |
Funktionen
Kanonisch
Der Namespace für kanonische Funktionen ist Edm, wie in Edm.Length("string"). Sie müssen den Namespace nicht angeben, es sei denn, ein anderer Namespace wird importiert, der eine Funktion mit demselben Namen wie eine kanonische Funktion enthält. Wenn zwei Namespaces dieselbe Funktion haben, 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 |
Namensräume
USING gibt Namespaces an, die in einem Abfrageausdruck verwendet werden.
Beispiel:
using SqlServer; LOWER('AA');
Ausgabe:
| Wert |
|---|
| aa |
Auslagerung
Paging kann durch Deklarieren einer SKIP- und LIMIT-Unterklausel in der ORDER BY-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:
| Identifikationsnummer | Name |
|---|---|
| 10 | Adina |
| 11 | Agcaoili |
| 12 | Aguilar |
Gruppierung
GROUPING BY gibt Gruppen an, in die Objekte platziert werden sollen, die von einem Abfrageausdruck (SELECT) zurückgegeben werden.
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 |
| ... |
Navigationssystem
Der Beziehungsnavigationsoperator ermöglicht die Navigation der Beziehung von einer Entität (an einem Ende) zu einer anderen Entität (am anderen Ende). NAVIGATE verwendet den Beziehungstyp, der als <Namespace> qualifiziert ist.<Name des> Beziehungstyps. „Navigate“ gibt „Ref<T>“ zurück, wenn die Kardinalität des „to“-Endes „1“ ist. Wenn die Kardinalität des „to“-Endes „n“ beträgt, wird die „Collection<Ref<T>>“ zurückgegeben.
Beispiel:
SELECT a.AddressID, (SELECT VALUE DEREF(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
WERT AUSWÄHLEN
Entity SQL stellt die SELECT VALUE-Klausel bereit, um die implizite Zeilenerstellung zu überspringen. In einer SELECT VALUE-Klausel kann nur ein Element angegeben werden. Wenn eine solche Klausel verwendet wird, wird kein Zeilenwrapper um die Elemente in der SELECT-Klausel erstellt, und eine Auflistung der gewünschten Form kann erstellt werden, z. B.: SELECT VALUE a.
Beispiel:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Ausgabe:
| Name |
|---|
| Anpassbares Rennen |
| All-Purpose Fahrradständer |
| AWC-Logo-Kappe |
| ... |
AUSWÄHLEN
Entität SQL stellt auch den Zeilenkonstruktor zum Erstellen beliebiger Zeilen bereit. SELECT verwendet ein oder mehrere Elemente in der Projektion und führt zu einem Datensatz mit Feldern, z. B.: SELECT a, b, c.
Beispiel:
SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Ausgabe:
| Name | Produkt-ID |
|---|---|
| Anpassbares Rennen | 1 |
| All-Purpose Fahrradständer | 879 |
| AWC-Logo-Kappe | 712 |
| ... | ... |
FALLAUSDRUCK
Der Case-Ausdruck wertet eine Reihe von booleschen Ausdrücken aus, um das Ergebnis zu bestimmen.
Beispiel:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
Ausgabe:
| Wert |
|---|
| WAHR |