Megosztás:


Entity SQL – rövid útmutató

Ez a témakör rövid áttekintést nyújt az Entity SQL-lekérdezésekre. A jelen témakörben szereplő lekérdezések az AdventureWorks Sales modellen alapulnak.

Literálok

Lánc

Unicode és nem Unicode karakterlánc-literálok léteznek. A Unicode-sztringek az 'N' betűvel vannak előfűzve. Például: N'hello'.

Az alábbi példa egy nem Unicode-sztringkonstansra mutat be példát:

'hello'
--same as
"hello"

Kimenet:

Érték
Üdvözöljük

Dátum/idő

A DateTime-literálokban a dátum- és időrészek egyaránt kötelezőek. Nincsenek alapértelmezett értékek.

Példa:

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

Kimenet:

Érték
2006.12.25. 1:01:00

Egész szám

Az egész számok lehetnek Int32 (123), UInt32 (123U), Int64 (123L) és UInt64 (123UL) típusúak.

Példa:

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

Kimenet:

Érték
1
2
3

Egyéb

Az Entity SQL által támogatott egyéb literálok a Guid, a bináris, a lebegőpontos/kettős, a decimális és null. Az Entity SQL null literáljai kompatibilisnek tekinthetők a fogalmi modell minden más típusával.

Típuskonstruktorok

SOR

A ROW egy névtelen, szerkezetileg típusú (rekord) értéket hoz létre a következő módon: ROW(1 AS myNumber, 'Name' AS myName).

Példa:

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

Kimenet:

Termékazonosító Név
1 Állítható verseny
879 All-Purpose Biciklitartó
712 AWC embléma sapka
... ...

TÖBBHALMAZ

A MULTISET gyűjteményeket hoz létre, például:

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

Példa:

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

Kimenet:

Termékazonosító Név Termékszám
842 Touring-Panniers, Nagy PA-T100

Objektum

A névvel ellátott típuskonstruktor (névvel megadott) felhasználó által definiált objektumokat hoz létre, például person("abc", 12).

Példa:

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

Kimenet:

Értékesítési rendelés részletei ID Fuvarozói nyomkövetési szám MegrendelésMennyiség Termékazonosító ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Hivatkozások

REF

A REF létrehoz egy entitástípus-példányra mutató hivatkozást. A következő lekérdezés például a Rendelések entitáskészletben lévő rendelési entitásokra mutató hivatkozásokat ad vissza:

SELECT REF(o) AS OrderID FROM Orders AS o

Kimenet:

Érték
1
2
3
...

Az alábbi példa a tulajdonságkiemelési operátort (.) használja egy entitás tulajdonságának eléréséhez. A tulajdonság kinyerési operátor használata esetén a rendszer automatikusan elhalasztja a hivatkozást.

Példa:

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

Kimenet:

Érték
Állítható verseny
All-Purpose Biciklitartó
AWC embléma sapka
...

DEREF

A DEREF megszüntet egy referenciaértéket, és előállítja a megszüntetés eredményét. A következő lekérdezés például a Rendelések entitáskészlet minden rendeléséhez létrehozza az Order entitásokat: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..

Példa:

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

Kimenet:

Érték
Állítható verseny
All-Purpose Biciklitartó
AWC embléma sapka
...

CREATEREF ÉS KEY

A CREATEREF létrehoz egy kulcsot átadó hivatkozást. A KEY egy kifejezés kulcsrészét nyeri ki típushivatkozással.

Példa:

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

Kimenet:

Termékazonosító
980
365
771
...

Funkciók

Kanónikus

A kanonikus függvények névtere az Edm, mint a Edm.Length("string"). Nem kell megadnia a névteret, kivéve, ha egy másik névteret importál, amely egy olyan függvényt tartalmaz, amelynek neve megegyezik a canonical függvény nevével. Ha két névtér ugyanazzal a függvénnyel rendelkezik, a felhasználónak meg kell adnia a teljes nevet.

Példa:

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

Kimenet:

NameLen
6
6
5

Microsoft Provider-Specific

A Microsoft szolgáltatóspecifikus függvényei a SqlServer névtérben találhatók.

Példa:

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

Kimenet:

E-maillen
27
27
26

Névterek

A USING a lekérdezési kifejezésben használt névtereket adja meg.

Példa:

using SqlServer; LOWER('AA');

Kimenet:

Érték
Aa

Lapozás

A lapozás úgy fejezhető ki, hogy SKIP és LIMIT aldáradékokat adunk meg az ORDER BY záradékhoz.

Példa:

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

Kimenet:

ID (Azonosító) Név
10 Adina
11 Agcaoili
12 Aguilar

Csoportosítás

A GROUPING BY megadja azokat a csoportokat, amelyekbe egy lekérdezési (SELECT) kifejezés által visszaadott objektumokat kell elhelyezni.

Példa:

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

Kimenet:

név
LL Mountain ülés összeszerelés
ML Mountain Ülés Összeállítás
HL hegyi ülés összeszerelés
...

A kapcsolatnavigációs operátor lehetővé teszi, hogy az egyik entitástól (a végétől a végéig) navigáljon a kapcsolaton. A NAVIGATE névtérként< minősített kapcsolattípust >használ.<kapcsolattípus neve>. A 'Navigate' visszaadja a Ref<T> értéket, ha a céltartomány kardinalitása 1. Ha a végpontok számossága n, akkor a Collection<Ref<T>> lesz visszaadva.

Példa:

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

Kimenet:

Címazonosító
1
2
3
...

VÁLASSZA KI AZ ÉRTÉKET ÉS VÁLASSZON

ÉRTÉK KIVÁLASZTÁSA

Az Entity SQL a SELECT VALUE záradékot biztosítja az implicit sorépítés kihagyásához. A SELECT VALUE záradékban csak egy elem adható meg. Ilyen záradék használata esetén a SELECT záradék elemei köré nem jön létre sorburkoló, és létrehozhat egy gyűjteményt a kívánt alakzatból, például: SELECT VALUE a.

Példa:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Kimenet:

Név
Állítható verseny
All-Purpose Biciklitartó
AWC embléma sapka
...

Kiválaszt

Az Entity SQL a sorkonstruktort is biztosítja tetszőleges sorok létrehozásához. A SELECT egy vagy több elemet vesz fel a vetítésben, és egy adatrekordot eredményez mezőkkel, például: SELECT a, b, c.

Példa:

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

Név Termékazonosító
Állítható verseny 1
All-Purpose Biciklitartó 879
AWC embléma sapka 712
... ...

ESETI KIFEJEZÉS

Az esetkifejezés logikai kifejezések halmazát értékeli ki az eredmény meghatározásához.

Példa:

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

Kimenet:

Érték
IGAZ

Lásd még