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