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

Sträng

Det finns Unicode- och icke-Unicode-teckensträngliteraler. Unicode-strängar har ett N i början. 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 och 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
25/12/2006 01:01:00

Heltal

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

Annat

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 typat värde (rekord) 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:

Produkt-ID Namn
1 Justerbar tävling
879 All-Purpose cykelställ
712 AWC-logotypmössa
... ...

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:

Produkt-ID Namn Produktnummer
842 Touring-cykelväskor, Stora PA-T100

Objekt

Namnge typkonstruktör konstruerar användardefinierade objekt (namngivna), såsom 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:

FörsäljningsorderdetaljID Transportörspårningsnummer Beställningskvantitet Produkt-ID ...
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 tävling
All-Purpose cykelställ
AWC-logotypmössa
...

DEREF

DEREF avrefererar ett referensvärde och producerar resultatet av den avrefereringen. 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 tävling
All-Purpose cykelställ
AWC-logotypmössa
...

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:

Produkt-ID
980
365
771
...

Funktionen

Kanoniska

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 Provider-Specific

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

Namnområden

USING anger namnområden som används i ett frågeuttryck.

Exempel:

using SqlServer; LOWER('AA');

Utdata:

Värde
Aa

Bläddring

Sidindelning kan uttryckas genom att deklarera undersatserna SKIP och LIMIT i 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-nummer Namn
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:

namn
LL-monteringsenhet för bergssadel
ML Mountain Säte Montering
HL Mountain Seat Assembly
...

Den relationsnavigeringsoperator som används gör det möjligt att navigera över en relation från en entitet (ursprung) till en annan (destination). NAVIGATE tar relationstypen kvalificerad som <namnrymd>.<relationstypsnamn>. Navigate returnerar Ref<T> om kardinaliteten för målpunkten är 1. Om kardinaliteten för till-ände är n kommer samlingen<Ref<T>> att returneras.

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:

Namn
Justerbar tävling
All-Purpose cykelställ
AWC-logotypmössa
...

VÄLJ

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:

Namn Produkt-ID
Justerbar tävling 1
All-Purpose cykelställ 879
AWC-logotypmössa 712
... ...

SKIFTLÄGESUTTRYCK

Case-uttryck 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
SANN

Se även