Dela via


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
...

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

Se även