Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat zawiera krótkie informacje na temat zapytań Entity SQL. Zapytania w tym temacie są oparte na modelu AdventureWorks Sales.
Wartości stałe
Sznurek
Istnieją literały ciągów znaków Unicode i innych niż Unicode. Ciągi Unicode są poprzedzane N. Na przykład N'hello'.
Poniżej przedstawiono przykład literału ciągu innego niż Unicode:
'hello'
--same as
"hello"
Wyjście:
| Wartość |
|---|
| Witam |
Data i Czas
W literałach DateTime części daty i godziny są obowiązkowe. Brak wartości domyślnych.
Przykład:
DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'
Wyjście:
| Wartość |
|---|
| 25.12.2006 01:01:00 |
Liczba całkowita
Literały całkowite mogą być typu Int32 (123), UInt32 (123U), Int64 (123L) i UInt64 (123UL).
Przykład:
--a collection of integers
{1, 2, 3}
Wyjście:
| Wartość |
|---|
| 1 |
| 2 |
| 3 |
Pozostałe
Inne literały obsługiwane przez jednostkę SQL to Guid, Binary, Float/Double, Decimal i null. Literały null w SQL dla encji są uznawane za zgodne z każdym innym typem w modelu konceptualnym.
Konstruktory typów
RZĄD
Wiersz tworzy anonimową, strukturalnie typizowaną wartość (rekord) w następujący sposób: ROW(1 AS myNumber, 'Name' AS myName).
Przykład:
SELECT VALUE row (product.ProductID AS ProductID, product.Name
AS ProductName) FROM AdventureWorksEntities.Product AS product
Wyjście:
| IdentyfikatorProduktu | Nazwa |
|---|---|
| 1 | Regulowany wyścig |
| 879 | stoisko rowerowe All-Purpose |
| 712 | Czapka z logo AWC |
| ...\ | ...\ |
MULTISET
MULTISET tworzy kolekcje, takie jak:
MULTISET(1,2,2,3)
--same as
-
{1,2,2,3}.
Przykład:
SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)
Wyjście:
| IdentyfikatorProduktu | Nazwa | Numer produktu | … |
|---|---|---|---|
| 842 | Touring-Panniers, duży | PA-T100 | … |
Przedmiot
Konstruktor nazwanego typu tworzy (nazwane) obiekty zdefiniowane przez użytkownika, takie jak person("abc", 12).
Przykład:
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
Wyjście:
| ID_Szczegółów_Zamówienia_Sprzedaży | Numer śledzenia przesyłki | IlośćZamówienia | IdentyfikatorProduktu | ...\ |
|---|---|---|---|---|
| 1 | 4911-403C-98 | 1 | 776 | ...\ |
| 2 | 4911-403C-98 | 3 | 777 | ...\ |
| ...\ | ...\ | ...\ | ...\ | ...\ |
Źródła
REF
REF tworzy odwołanie do instancji typu jednostki. Na przykład następujące zapytanie zwraca odwołania do każdej jednostki Order w zestawie jednostek Orders:
SELECT REF(o) AS OrderID FROM Orders AS o
Wyjście:
| Wartość |
|---|
| 1 |
| 2 |
| 3 |
| ...\ |
W poniższym przykładzie użyto operatora wyodrębniania właściwości (.) w celu uzyskania dostępu do właściwości jednostki. Gdy jest używany operator wyodrębniania właściwości, odwołanie jest automatycznie wyłuszczane.
Przykład:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Wyjście:
| Wartość |
|---|
| Regulowany wyścig |
| stoisko rowerowe All-Purpose |
| Czapka z logo AWC |
| ...\ |
DEREF
DEREF dereferencjonuje wartość referencyjną i zwraca wynik tego dereferencjonowania. Na przykład następujące zapytanie tworzy encje zamówienia dla każdego zamówienia w zestawie encji zamówień: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..
Przykład:
SELECT VALUE DEREF(REF(p)).Name FROM
AdventureWorksEntities.Product AS p
Wyjście:
| Wartość |
|---|
| Regulowany wyścig |
| stoisko rowerowe All-Purpose |
| Czapka z logo AWC |
| ...\ |
UTWÓRZREFERENCJĘ I KLUCZ
CREATEREF tworzy odwołanie z użyciem klucza. KLUCZ wyodrębnia kluczową część wyrażenia z odwołaniem do typu.
Przykład:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
FROM AdventureWorksEntities.Product AS p
Wyjście:
| IdentyfikatorProduktu |
|---|
| 980 |
| 365 |
| 771 |
| ...\ |
Funkcje
Kanoniczny
Przestrzeń nazw dla funkcji kanonicznych to Edm, jak w Edm.Length("string"). Nie trzeba określać przestrzeni nazw, chyba że zaimportowana jest inna przestrzeń nazw zawierająca funkcję o takiej samej nazwie jak funkcja kanoniczna. Jeśli dwie przestrzenie nazw mają tę samą funkcję, użytkownik powinien określić pełną nazwę.
Przykład:
SELECT Length(c. FirstName) AS NameLen FROM
AdventureWorksEntities.Contact AS c
WHERE c.ContactID BETWEEN 10 AND 12
Wyjście:
| NameLen |
|---|
| 6 |
| 6 |
| 5 |
Microsoft Provider-Specific
Funkcje specyficzne dla dostawcy firmy Microsoft znajdują się w SqlServer przestrzeni nazw.
Przykład:
SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
AdventureWorksEntities.Contact AS c WHERE
c.ContactID BETWEEN 10 AND 12
Wyjście:
| Adres e-mailLen |
|---|
| 27 |
| 27 |
| 26 |
Przestrzenie nazw
USING określa przestrzenie nazw używane w wyrażeniu zapytania.
Przykład:
using SqlServer; LOWER('AA');
Wyjście:
| Wartość |
|---|
| Aa |
Stronicowanie
Stronicowanie można wyrazić, deklarując podklauzule SKIP i LIMIT do klauzuli ORDER BY.
Przykład:
SELECT c.ContactID as ID, c.LastName AS Name FROM
AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;
Wyjście:
| Identyfikator | Nazwa |
|---|---|
| 10 | Adina |
| 11 | Agcaoili |
| 12 | Aguilar |
Grupowanie
GRUPOWANIE WEDŁUG określa grupy, do których mają zostać umieszczone obiekty zwracane przez wyrażenie zapytania (SELECT).
Przykład:
SELECT VALUE name FROM AdventureWorksEntities.Product AS P
GROUP BY P.Name HAVING MAX(P.ListPrice) > 5
Wyjście:
| nazwa |
|---|
| Zestaw siedzeń górskich LL |
| Zestaw siedzeń górskich ML |
| Zestaw siedzeń górskich HL |
| ...\ |
Nawigacja
Operator nawigacji relacji umożliwia nawigowanie po relacji z jednej encji (od punktu początkowego) do innej (do punktu końcowego). Funkcja NAVIGATE przyjmuje typ relacji kwalifikowany jako <przestrzeń nazw>.<nazwa> typu relacji. Funkcja Navigate zwraca Ref<T>, jeśli kardynalność końca wynosi 1. Jeśli kardynalność na końcu wynosi n, zostanie zwrócona kolekcja< ref<T>>.
Przykład:
SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
FROM AdventureWorksEntities.Address AS a
Wyjście:
| AddressID |
|---|
| 1 |
| 2 |
| 3 |
| ...\ |
WYBIERZ WARTOŚĆ I WYBIERZ
WYBIERZ WARTOŚĆ
Jednostka SQL udostępnia klauzulę SELECT VALUE, aby pominąć niejawną konstrukcję wiersza. W klauzuli SELECT VALUE można określić tylko jeden element. W przypadku użycia takiej klauzuli nie jest tworzone żadne otoczenie wiersza dla elementów w klauzuli SELECT, a kolekcję żądanego kształtu można utworzyć, na przykład: SELECT VALUE a.
Przykład:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Wyjście:
| Nazwa |
|---|
| Regulowany wyścig |
| stoisko rowerowe All-Purpose |
| Czapka z logo AWC |
| ...\ |
Wybierz
Jednostka SQL udostępnia również konstruktor wierszy do konstruowania dowolnych wierszy. Funkcja SELECT przyjmuje co najmniej jeden element w projekcji i powoduje utworzenie rekordu danych z polami, na przykład: SELECT a, b, c.
Przykład:
WYBIERZ p.Name, p.ProductID FROM AdventureWorksEntities.Product jako dane wyjściowe p:
| Nazwa | IdentyfikatorProduktu |
|---|---|
| Regulowany wyścig | 1 |
| stoisko rowerowe All-Purpose | 879 |
| Czapka z logo AWC | 712 |
| ...\ | ...\ |
WYRAŻENIE WARUNKOWE
Wyrażenie przypadku oblicza zestaw wyrażeń logicznych w celu określenia wyniku.
Przykład:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
Wyjście:
| Wartość |
|---|
| PRAWIDŁOWE |