Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 |
| ... |
Navigace
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Ý |