Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 |
| ... |
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 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 |