Sdílet prostřednictvím


Stručná referenční dokumentace k Entity SQL

Toto téma obsahuje stručný přehled dotazů Entity SQL. Dotazy v tomto tématu jsou založené na modelu AdventureWorks Sales.

Literalové hodnoty

Řetězec

K dispozici jsou literály řetězce znaků Unicode a ne-Unicode. Řetězce Unicode jsou předřazeny N. Například N'hello'.

Následuje příklad řetězcového literálu jiného typu Než Unicode:

'hello'
--same as
"hello"

Výstup:

Hodnota
dobrý den

Datum a čas

V literálech DateTime jsou povinné části data i času. Neexistují žádné výchozí hodnoty.

Příklad:

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

Výstup:

Hodnota
25.12.2006 1:01:00

Celé číslo

Celočíselné literály můžou být typu Int32 (123), UInt32 (123U), Int64 (123L) a UInt64 (123UL).

Příklad:

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

Výstup:

Hodnota
1
2
3

Ostatní

Další literály podporované entity SQL jsou Guid, Binary, Float/Double, Decimal a null. Literály null v Entity SQL jsou považovány za kompatibilní s každým jiným typem konceptuálního modelu.

Konstruktory typů

Řádek

ROW vytvoří anonymní, strukturálně typovanou hodnotu (záznam) jako v: ROW(1 AS myNumber, 'Name' AS myName).

Příklad:

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

Výstup:

ProduktID Název
1 Nastavitelný závod
879 All-Purpose Stojan na kolo
712 čepice s logem AWC
... ...

MULTISET

MULTISET vytváří kolekce, například:

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

Příklad:

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

Výstup:

ProduktID Název ČísloProduktů
842 Touring-Panniers, Velký PA-T100

Objekt

Konstruktor pojmenovaného typu vytváří pojmenované uživatelem definované objekty, například person("abc", 12).

Příklad:

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

Výstup:

SalesOrderDetailID (ID detailu objednávky) sledovací číslo dopravce Množství objednávky ProduktID ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Odkazy

SUDÍ

Odkaz vytvoří odkaz na instanci typu entity. Například následující dotaz vrátí odkazy na každou entitu Objednávky v rámci sady entit Orders.

SELECT REF(o) AS OrderID FROM Orders AS o

Výstup:

Hodnota
1
2
3
...

Následující příklad používá operátor extrakce vlastností (.) pro přístup k vlastnosti entity. Při použití operátoru extrakce vlastností se odkaz automaticky dereferencuje.

Příklad:

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

Výstup:

Hodnota
Nastavitelný závod
All-Purpose Stojan na kolo
čepice s logem AWC
...

DEREF

DEREF odkázání referenční hodnoty a vrátí výsledek tohoto odkázání. Například následující dotaz vytvoří entity Objednávky pro každou objednávku v sadě entit Objednávky: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..

Příklad:

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

Výstup:

Hodnota
Nastavitelný závod
All-Purpose Stojan na kolo
čepice s logem AWC
...

CREATEREF A KLÍČ

CREATEREF vytvoří odkaz pomocí klíče. KEY extrahuje klíčovou část výrazu s odkazem na typ.

Příklad:

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

Výstup:

ProduktID
980
365
771
...

Funkce

Kanonický

Obor názvů pro kanonické funkce je Edm, jako v Edm.Length("string"). Obor názvů není nutné zadávat, pokud není importován jiný obor názvů, který obsahuje funkci se stejným názvem jako kanonická funkce. Pokud mají dva obory názvů stejnou funkci, měl by uživatel zadat celé jméno.

Příklad:

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

Výstup:

NameLen
6
6
5

Microsoft Provider-Specific

Microsoft funkce specifické pro poskytovateleSqlServer jsou v jmenném prostoru.

Příklad:

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

Výstup:

EmailLen
27
27
26

Jmenné prostory

USING určuje obory názvů používané ve výrazu dotazu.

Příklad:

using SqlServer; LOWER('AA');

Výstup:

Hodnota
Aa

Stránkování

Stránkování lze vyjádřit deklarací dílčích klauzulí SKIP a LIMIT do klauzule ORDER BY .

Příklad:

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

Výstup:

Průkaz totožnosti Název
10 Adina
11 Agcaoili
12 Aguilar

Seskupení

FUNKCE GROUPING BY určuje skupiny, do kterých se mají umístit objekty vrácené výrazem dotazu (SELECT).

Příklad:

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

Výstup:

název
Sestavení horského sedáku LL
Sestava sedadla ML Mountain
Sestava horských sedadel HL
...

Operátor pro navigaci vztahů umožňuje přecházet ve vztahu od jedné entity (počátek) k druhé (cíl). NAVIGATE přebírá typ vztahu kvalifikovaný jako <obor názvů>.<název typu vztahu>. Funkce Navigate vrátí hodnotu T<>, pokud kardinalita konce je 1. Pokud je kardinalita koncového bodu n, vrátí se Collection<Ref<T>>.

Příklad:

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

Výstup:

ID adresy
1
2
3
...

VYBERTE HODNOTU A VÝBĚR

VYBERTE HODNOTU

Entity SQL poskytuje klauzuli SELECT VALUE pro přeskočení implicitní konstrukce řádků. V klauzuli SELECT VALUE lze zadat pouze jednu položku. Pokud se tato klauzule použije, není kolem položek v klauzuli SELECT sestavena žádná obálka řádku a lze vytvořit kolekci požadovaného obrazce, například: SELECT VALUE a.

Příklad:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Výstup:

Název
Nastavitelný závod
All-Purpose Stojan na kolo
čepice s logem AWC
...

VYBRAT

Entity SQL také poskytuje konstruktor řádku pro vytvoření libovolných řádků. SELECT přebírá jeden nebo více prvků v projekci a výsledkem je datový záznam s poli, například: SELECT a, b, c.

Příklad:

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

Název ProduktID
Nastavitelný závod 1
All-Purpose Stojan na kolo 879
čepice s logem AWC 712
... ...

VÝRAZ CASE

Výraz case vyhodnocuje sadu logických výrazů k určení výsledku.

Příklad:

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

Výstup:

Hodnota
PRAVDIVÝ

Viz také