Delen via


Snelzoekgids voor entiteits-SQL

Dit onderwerp bevat een beknopt overzicht van entiteits-SQL-query's. De query's in dit onderwerp zijn gebaseerd op het AdventureWorks Sales-model.

Letterlijke waarden

String

Er zijn letterlijke tekenreeksen voor Unicode en niet-Unicode. Unicode-tekenreeksen worden voorafgegaan door N. Bijvoorbeeld N'hello'.

Hier volgt een voorbeeld van een letterlijke niet-Unicode-tekenreeks:

'hello'
--same as
"hello"

Uitvoer:

Weergegeven als
hallo

Datum en tijd

In letterlijke datum/tijd zijn zowel datum- als tijdonderdelen verplicht. Er zijn geen standaardwaarden.

Voorbeeld:

DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'

Uitvoer:

Weergegeven als
25-12-2006 1:01:00 uur

Geheel getal

Letterlijke waarden voor gehele getallen kunnen van het type Int32 (123), UInt32 (123U), Int64 (123L) en UInt64 (123UL) zijn.

Voorbeeld:

--a collection of integers
{1, 2, 3}

Uitvoer:

Weergegeven als
1
2
3

Overige

Andere letterlijke gegevens die worden ondersteund door Entity SQL zijn Guid, Binary, Float/Double, Decimal en null. Null-letterlijke waarden in Entity SQL worden beschouwd als compatibel met elk ander type in het conceptuele model.

Type Constructors

ROEIEN

ROW maakt een anonieme, structureel getypte waarde (recordwaarde) zoals in: ROW(1 AS myNumber, 'Name' AS myName).

Voorbeeld:

SELECT VALUE row (product.ProductID AS ProductID, product.Name
    AS ProductName) FROM AdventureWorksEntities.Product AS product

Uitvoer:

ProductID Naam
1 Aanpasbare race
879 Fietsstandaard voor alle doeleinden
712 Pet met AWC-logo
... ...

MULTISET

MULTISET bouwt verzamelingen, zoals:

MULTISET(1,2,2,3) --same as-{1,2,2,3}.

Voorbeeld:

SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)

Uitvoer:

ProductID Naam ProductNummering
842 Touring-Panniers, Groot PA-T100

Object

Benoemde Type Constructor-constructies (benoemde) door de gebruiker gedefinieerde objecten, zoals person("abc", 12).

Voorbeeld:

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

Uitvoer:

SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Verwijzingen

REF

VERW maakt een verwijzing naar een instantie van het entiteitstype. De volgende query retourneert bijvoorbeeld verwijzingen naar elke orderentiteit in de set Orders-entiteiten:

SELECT REF(o) AS OrderID FROM Orders AS o

Uitvoer:

Weergegeven als
1
2
3
...

In het volgende voorbeeld wordt de operator voor eigenschapextractie (.) gebruikt om toegang te krijgen tot een eigenschap van een entiteit. Wanneer de operator voor eigenschapextractie wordt gebruikt, wordt de verwijzing automatisch gededucteerd.

Voorbeeld:

SELECT VALUE REF(p).Name FROM
    AdventureWorksEntities.Product AS p

Uitvoer:

Weergegeven als
Aanpasbare race
Fietsstandaard voor alle doeleinden
Pet met AWC-logo
...

DEREF

DEREF deducteert een referentiewaarde en produceert het resultaat van die deductie. De volgende query produceert bijvoorbeeld de orderentiteiten voor elke order in de entiteitsset Orders: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..

Voorbeeld:

SELECT VALUE DEREF(REF(p)).Name FROM
    AdventureWorksEntities.Product AS p

Uitvoer:

Weergegeven als
Aanpasbare race
Fietsstandaard voor alle doeleinden
Pet met AWC-logo
...

CREATEREF EN KEY

CREATEREF maakt een verwijzing die een sleutel doorgeeft. KEY extraheert het sleutelgedeelte van een expressie met typereferentie.

Voorbeeld:

SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
    FROM AdventureWorksEntities.Product AS p

Uitvoer:

ProductID
980
365
771
...

Functies

Canonical

De naamruimte voor canonieke functies is Edm, zoals in Edm.Length("string"). U hoeft de naamruimte niet op te geven, tenzij er een andere naamruimte wordt geïmporteerd die een functie met dezelfde naam als een canonieke functie bevat. Als twee naamruimten dezelfde functie hebben, moet de gebruiker de volledige naam opgeven.

Voorbeeld:

SELECT Length(c. FirstName) AS NameLen FROM
    AdventureWorksEntities.Contact AS c
    WHERE c.ContactID BETWEEN 10 AND 12

Uitvoer:

NameLen
6
6
5

Microsoft-providerspecifiek

Microsoft-providerspecifieke functies bevinden zich in de SqlServer naamruimte.

Voorbeeld:

SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
    AdventureWorksEntities.Contact AS c WHERE
    c.ContactID BETWEEN 10 AND 12

Uitvoer:

EmailLen
27
27
26

Naamruimten

USING specificeert naamruimten die worden gebruikt in een query-expressie.

Voorbeeld:

using SqlServer; LOWER('AA');

Uitvoer:

Weergegeven als
Aa

Paginering

Paging kan worden uitgedrukt door subclausules SKIP en LIMIT aan de ORDER BY-component te declareren.

Voorbeeld:

SELECT c.ContactID as ID, c.LastName AS Name FROM
    AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;

Uitvoer:

Id Naam
10 Adina
11 Agcaoili
12 Aguilar

Groepering

GROEPEREN OP geeft groepen op waarin objecten die worden geretourneerd door een queryexpressie (SELECT) moeten worden geplaatst.

Voorbeeld:

SELECT VALUE name FROM AdventureWorksEntities.Product AS P
    GROUP BY P.Name HAVING MAX(P.ListPrice) > 5

Uitvoer:

naam
LL Mountain Seat Assembly
ML Mountain Seat Assembly
HL Mountain Seat Assembly
...

Met de navigatieoperator voor relaties kunt u navigeren over de relatie van de ene entiteit (van het ene naar het andere) (naar het einde). NAVIGATE gebruikt het relatietype dat is gekwalificeerd als <naamruimte>.<naam> van relatietype. Navigeren retourneert verw<T> als de kardinaliteit van het einde 1 is. Als de kardinaliteit van het to-end n is, wordt de verzamelingverwW<<T>> geretourneerd.

Voorbeeld:

SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
    NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
    FROM AdventureWorksEntities.Address AS a

Uitvoer:

AddressID
1
2
3
...

WAARDE SELECTEREN EN SELECTEREN

SELECT VALUE

Entity SQL biedt de COMPONENT SELECT VALUE om de impliciete rijconstructie over te slaan. Er kan slechts één item worden opgegeven in een SELECT VALUE-component. Wanneer een dergelijke component wordt gebruikt, wordt er geen rijwikkelaar gemaakt rond de items in de SELECT-component en kan een verzameling van de gewenste shape worden geproduceerd, bijvoorbeeld: SELECT VALUE a.

Voorbeeld:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Uitvoer:

Naam
Aanpasbare race
Fietsstandaard voor alle doeleinden
Pet met AWC-logo
...

SELECTEREN

Entiteit SQL biedt ook de rijconstructor voor het maken van willekeurige rijen. SELECT neemt een of meer elementen in de projectie en resulteert in een gegevensrecord met velden, bijvoorbeeld: SELECT a, b, c.

Voorbeeld:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output:

Naam ProductID
Aanpasbare race 1
Fietsstandaard voor alle doeleinden 879
Pet met AWC-logo 712
... ...

CASE-EXPRESSIE

De case-expressie evalueert een set Boole-expressies om het resultaat te bepalen.

Voorbeeld:

CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END

Uitvoer:

Weergegeven als
TRUE

Zie ook