Snabbreferens för entitets-SQL
Det här avsnittet innehåller en snabb referens till SQL-frågor för entitet. Frågorna i det här avsnittet baseras på AdventureWorks Sales-modellen.
Literaler
String
Det finns Unicode- och icke-Unicode-teckensträngliteraler. Unicode-strängar förbereds med N. Till exempel N'hello'
.
Följande är ett exempel på en strängliteral som inte är unicode:
'hello'
--same as
"hello"
Utdata:
Värde |
---|
hallå |
Datum/tid
I DateTime-literaler är både datum- och tidsdelar obligatoriska. Det finns inga standardvärden.
Exempel:
DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'
Utdata:
Värde |
---|
12/25/2006 01:01:00 |
Integer
Heltal kan vara av typen Int32 (123), UInt32 (123U), Int64 (123L) och UInt64 (123UL).
Exempel:
--a collection of integers
{1, 2, 3}
Utdata:
Värde |
---|
1 |
2 |
3 |
Övrigt
Andra literaler som stöds av entitets-SQL är Guid, Binary, Float/Double, Decimal och null
. Null-literaler i entitets-SQL anses vara kompatibla med alla andra typer i konceptmodellen.
Typkonstruktorer
RAD
ROW konstruerar ett anonymt, strukturellt skrivet värde (post) som i: ROW(1 AS myNumber, 'Name' AS myName).
Exempel:
SELECT VALUE row (product.ProductID AS ProductID, product.Name
AS ProductName) FROM AdventureWorksEntities.Product AS product
Utdata:
ProductID | Name |
---|---|
1 | Justerbar ras |
879 | All-Purpose Bike Stand |
712 | Keps med AWC-logotyp |
... | ... |
MULTISET
MULTISET konstruerar samlingar, till exempel:
MULTISET(1,2,2,3)
--same as
-{1,2,2,3}.
Exempel:
SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)
Utdata:
ProductID | Name | ProductNumber | … |
---|---|---|---|
842 | Touring-Panniers, Stor | PA-T100 | … |
Objekt
Namngivna typkonstruktorkonstruktioner (namngivna) användardefinierade objekt, till exempel person("abc", 12)
.
Exempel:
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
Utdata:
SalesOrderDetailID | CarrierTrackingNumber | OrderQty | ProductID | ... |
---|---|---|---|---|
1 | 4911-403C-98 | 1 | 776 | ... |
2 | 4911-403C-98 | 3 | 777 | ... |
... | ... | ... | ... | ... |
Referenser
REF
REF skapar en referens till en instans av entitetstyp. Följande fråga returnerar till exempel referenser till varje orderentitet i entitetsuppsättningen Beställningar:
SELECT REF(o) AS OrderID FROM Orders AS o
Utdata:
Värde |
---|
1 |
2 |
3 |
... |
I följande exempel används egenskapsextraheringsoperatorn (.) för att få åtkomst till en egenskap för en entitet. När egenskapsextraheringsoperatorn används avrefereras referensen automatiskt.
Exempel:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Utdata:
Värde |
---|
Justerbar ras |
All-Purpose Bike Stand |
Keps med AWC-logotyp |
... |
DEREF
DEREF refererar till ett referensvärde och ger resultatet av den avreferensen. Följande fråga skapar till exempel orderentiteter för varje Order i entitetsuppsättningen Beställningar: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2
..
Exempel:
SELECT VALUE DEREF(REF(p)).Name FROM
AdventureWorksEntities.Product AS p
Utdata:
Värde |
---|
Justerbar ras |
All-Purpose Bike Stand |
Keps med AWC-logotyp |
... |
CREATEREF OCH NYCKEL
CREATEREF skapar en referens som skickar en nyckel. KEY extraherar nyckeldelen av ett uttryck med typreferens.
Exempel:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
FROM AdventureWorksEntities.Product AS p
Utdata:
ProductID |
---|
980 |
365 |
771 |
... |
Funktioner
Canonical
Namnområdet för kanoniska funktioner är Edm, som i Edm.Length("string")
. Du behöver inte ange namnområdet om inte ett annat namnområde importeras som innehåller en funktion med samma namn som en kanonisk funktion. Om två namnområden har samma funktion ska användaren ange det fullständiga namnet.
Exempel:
SELECT Length(c. FirstName) AS NameLen FROM
AdventureWorksEntities.Contact AS c
WHERE c.ContactID BETWEEN 10 AND 12
Utdata:
NameLen |
---|
6 |
6 |
5 |
Microsoft-providerspecifik
Microsofts providerspecifika funktioner finns i SqlServer
namnområdet.
Exempel:
SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
AdventureWorksEntities.Contact AS c WHERE
c.ContactID BETWEEN 10 AND 12
Utdata:
EmailLen |
---|
27 |
27 |
26 |
Namnrymder
USING anger namnområden som används i ett frågeuttryck.
Exempel:
using SqlServer; LOWER('AA');
Utdata:
Värde |
---|
Aa |
Sidnumrering
Växling kan uttryckas genom att deklarera undersatserna SKIP och LIMIT till ORDER BY-satsen .
Exempel:
SELECT c.ContactID as ID, c.LastName AS Name FROM
AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;
Utdata:
ID | Name |
---|---|
10 | Adina |
11 | Agcaoili |
12 | Aguilar |
Gruppering
GRUPPERING BY anger grupper i vilka objekt som returneras av ett frågeuttryck (SELECT) ska placeras.
Exempel:
SELECT VALUE name FROM AdventureWorksEntities.Product AS P
GROUP BY P.Name HAVING MAX(P.ListPrice) > 5
Utdata:
name |
---|
LL Mountain Seat Assembly |
ML Mountain Seat Assembly |
HL Mountain Seat Assembly |
... |
Navigering
Med relationsnavigeringsoperatorn kan du navigera över relationen från en entitet (från slut) till en annan (till slut). NAVIGATE tar relationstypen kvalificerad som <namnrymd>.<relationstypsnamn>. Navigate returnerar Ref<T> om kardinaliteten för till-slutet är 1. Om kardinaliteten för till-slutet är n returneras samlingen<Ref<T>> .
Exempel:
SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
FROM AdventureWorksEntities.Address AS a
Utdata:
AddressID |
---|
1 |
2 |
3 |
... |
VÄLJ VÄRDE OCH VÄLJ
VÄLJ VÄRDE
Entitets-SQL tillhandahåller SELECT VALUE-satsen för att hoppa över den implicita radkonstruktionen. Endast ett objekt kan anges i en SELECT VALUE-sats. När en sådan sats används skapas ingen radomslutning runt objekten i SELECT-satsen, och en samling av önskad form kan skapas, till exempel: SELECT VALUE a
.
Exempel:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Utdata:
Name |
---|
Justerbar ras |
All-Purpose Bike Stand |
Keps med AWC-logotyp |
... |
SELECT
Entitets-SQL tillhandahåller även radkonstruktorn för att konstruera godtyckliga rader. SELECT tar ett eller flera element i projektionen och resulterar i en datapost med fält, till exempel: SELECT a, b, c
.
Exempel:
SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output:
Name | ProductID |
---|---|
Justerbar ras | 1 |
All-Purpose Bike Stand | 879 |
Keps med AWC-logotyp | 712 |
... | ... |
SKIFTLÄGESUTTRYCK
Skiftlägesuttrycket utvärderar en uppsättning booleska uttryck för att fastställa resultatet.
Exempel:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
Utdata:
Värde |
---|
Sant |