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

Snaar / Touwtje

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:

Waarde
hallo

Datum/tijd

In DateTime-literalen zijn zowel de datums- als tijdsdelen verplicht. Er zijn geen standaardwaarden.

Voorbeeld:

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

Uitvoer:

Waarde
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:

Waarde
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 All-Purpose fietsstandaard
712 AWC-logopet
... ...

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 ProductNummer
842 Touring-Panniers, Groot PA-T100

Voorwerp

Named Type Constructor-constructies maken (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 CarrierVolgnummer Bestelhoeveelheid Productid ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Referenties

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:

Waarde
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:

Waarde
Aanpasbare race
All-Purpose fietsstandaard
AWC-logopet
...

DEREF

DEREF deducteert een referentiewaarde en produceert het resultaat van die deductie. De volgende query produceert bijvoorbeeld de Order-entiteiten voor elke order in de Orders-entiteitsset: 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:

Waarde
Aanpasbare race
All-Purpose fietsstandaard
AWC-logopet
...

CREATEREF EN KEY

CREATEREF creëert een verwijzing met behulp van een sleutel. 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

Standaard

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

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:

Waarde
Aa

Oproepen

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

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-kaart 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 Zadelmontage
ML Mountain Seat Assembly
HL Mountain Zadelmontage
...

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 Ref<T> als de eindkardinaliteit 1 is. Als de kardinaliteit van het 'to' einde n is, wordt de verzameling<Ref<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 KIEZEN EN SELECTEREN

SELECTEER WAARDE

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

Voorbeeld:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Uitvoer:

Naam
Aanpasbare race
All-Purpose fietsstandaard
AWC-logopet
...

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
All-Purpose fietsstandaard 879
AWC-logopet 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:

Waarde
WAAR

Zie ook