Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 |
| ... |
Navigáció
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 |