Szybkie odwołanie do języka Entity SQL
Ten temat zawiera krótkie informacje na temat zapytań Entity SQL. Zapytania w tym temacie są oparte na modelu AdventureWorks Sales.
Literały
String
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ść |
---|
hello |
DateTime
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ść |
---|
12/25/2006 1:01:00 |
Integer
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 |
Inne
Inne literały obsługiwane przez jednostkę SQL to Guid, Binary, Float/Double, Decimal i null
. Literały null w jednostce SQL są uważane za zgodne z każdym innym typem w modelu koncepcyjnym.
Konstruktory typów
ROW
Wiersz tworzy anonimową, strukturalnie typizowanej wartości (rekordu) 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:
ProductID | Nazwisko |
---|---|
1 | Regulowany wyścig |
879 | Stojak na rowery ogólnego przeznaczenia |
712 | AWC Logo Cap |
... | ... |
MULTISET
Kolekcje konstrukcji MULTISET , 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:
ProductID | Nazwisko | Numer produktu | … |
---|---|---|---|
842 | Touring-Panniers, duży | PA-T100 | … |
Objekt
Nazwane konstruktory typów konstruuje (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:
SalesOrderDetailID | CarrierTrackingNumber | OrderQty | ProductID | ... |
---|---|---|---|---|
1 | 4911-403C-98 | 1 | 776 | ... |
2 | 4911-403C-98 | 3 | 777 | ... |
... | ... | ... | ... | ... |
Informacje
REF
Odwołanie REF tworzy odwołanie do wystąpienia 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 |
Stojak na rowery ogólnego przeznaczenia |
AWC Logo Cap |
... |
DEREF
DEREF wyłuszcza wartość referencyjną i generuje wynik tego wyłuszczania. Na przykład następujące zapytanie generuje jednostki Order dla każdego zamówienia w zestawie jednostek Orders: 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 |
Stojak na rowery ogólnego przeznaczenia |
AWC Logo Cap |
... |
CREATEREF I KEY
METODA CREATEREF tworzy odwołanie przekazujące klucz. 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:
ProductID |
---|
980 |
365 |
771 |
... |
Funkcje
Canonical
Przestrzeń nazw funkcji kanonicznych to Edm, jak w pliku 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 |
Specyficzne dla dostawcy firmy Microsoft
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 pod klauzulę 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 | Nazwisko |
---|---|
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:
name |
---|
Zestaw siedzeń górskich LL |
Zestaw siedzeń górskich ML |
Zestaw siedzeń górskich HL |
... |
Nawigacja
Operator nawigacji relacji umożliwia przechodzenie przez relację z jednej jednostki (od końca) do innej (na koniec). Funkcja NAVIGATE przyjmuje typ relacji kwalifikowany jako <przestrzeń nazw>.<nazwa> typu relacji. Funkcja Navigate zwraca wartość Ref<T> , jeśli kardynalność wartości do końca wynosi 1. Jeśli kardynalność to n, zostanie zwrócony ref<T>> kolekcji<.
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:
Identyfikator_adresu |
---|
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 tworzona żadna otoka wierszy wokół elementów w klauzuli SELECT, a kolekcja żądanego kształtu może zostać utworzona, na przykład: SELECT VALUE a
.
Przykład:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Wyjście:
Nazwisko |
---|
Regulowany wyścig |
Stojak na rowery ogólnego przeznaczenia |
AWC Logo Cap |
... |
SELECT
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:
Nazwisko | ProductID |
---|---|
Regulowany wyścig | 1 |
Stojak na rowery ogólnego przeznaczenia | 879 |
AWC Logo Cap | 712 |
... | ... |
WYRAŻENIE WIELKOŚCI LITER
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ść |
---|
PRAWDA |