Condividi tramite


Informazioni di riferimento rapido su Entity SQL

In questo argomento viene fornito un riferimento rapido alle query Entity SQL. Le query contenute in questo argomento si basano sul modello AdventureWorks Sales.

Valori letterali

Stringa

Sono disponibili valori letterali stringa di caratteri Unicode e non Unicode. Le stringhe Unicode sono precedute da N. Ad esempio, N'hello'.

Di seguito è riportato un esempio di stringa letterale non Unicode:

'hello'
--same as
"hello"

Risultato:

Valore
Ciao

Data e ora

Nei valori letterali DateTime le parti di data e ora sono obbligatorie. Non sono presenti valori predefiniti.

Esempio:

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

Risultato:

Valore
25/12/2006 01:01:00 AM

Numero intero

I valori letterali integer possono essere di tipo Int32 (123), UInt32 (123U), Int64 (123L) e UInt64 (123UL).

Esempio:

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

Risultato:

Valore
1
2
3

Altro

Altri valori letterali supportati da Entity SQL sono Guid, Binary, Float/Double, Decimal e null. I valori letterali Null in Entity SQL vengono considerati compatibili con tutti gli altri tipi nel modello concettuale.

Costruttori di tipi

FILA

ROW costruisce un valore anonimo e tipizzato strutturalmente (record) come in: ROW(1 AS myNumber, 'Name' AS myName).

Esempio:

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

Risultato:

ID prodotto Nome
1 Gara regolabile
879 All-Purpose Supporto per biciclette
712 Cappellino con logo AWC
... ...

MULTISET

MULTISET costruisce raccolte, ad esempio:

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

Esempio:

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

Risultato:

ID prodotto Nome Numero di Prodotto
842 Touring-Panniers, Grande PA-T100

Oggetto

Costruttore di Tipo Denominato costruisce oggetti definiti dall'utente, ad esempio person("abc", 12).

Esempio:

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

Risultato:

IDDettaglioOrdinediVendita Numero di tracciamento del corriere OrderQty ID prodotto ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Riferimenti

REF

REF crea un riferimento a un'istanza del tipo di entità. Per esempio, la seguente interrogazione restituisce riferimenti a ciascuna entità Order nel set di entità Orders.

SELECT REF(o) AS OrderID FROM Orders AS o

Risultato:

Valore
1
2
3
...

Nell'esempio seguente viene utilizzato l'operatore di estrazione delle proprietà (.) per accedere a una proprietà di un'entità. Quando viene utilizzato l'operatore di estrazione delle proprietà, il riferimento viene dereferenziato automaticamente.

Esempio:

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

Risultato:

Valore
Gara regolabile
All-Purpose Supporto per biciclette
Cappellino con logo AWC
...

DEREF

DEREF dereferenzia un valore di riferimento e produce il risultato di tale dereferenziazione. Ad esempio, la query seguente genera le entità Order per ogni Ordine nel set di entità Orders: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..

Esempio:

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

Risultato:

Valore
Gara regolabile
All-Purpose Supporto per biciclette
Cappellino con logo AWC
...

CREATEREF E KEY

CREATEREF crea un riferimento passando una chiave. KEY estrae la parte chiave di un'espressione con riferimento al tipo.

Esempio:

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

Risultato:

ID prodotto
980
365
771
...

Funzioni

Canonico

Lo spazio dei nomi per le funzioni canoniche è Edm, come in Edm.Length("string"). Non è necessario specificare lo spazio dei nomi a meno che non venga importato un altro spazio dei nomi contenente una funzione con lo stesso nome di una funzione canonica. Se due spazi dei nomi hanno la stessa funzione, l'utente deve specificare il nome completo.

Esempio:

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

Risultato:

NameLen
6
6
5

Microsoft Provider-Specific

Le funzioni specifiche del provider Microsoft si trovano nello SqlServer spazio dei nomi.

Esempio:

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

Risultato:

EmailLen
27
27
26

Namespace

USING specifica i namespace utilizzati in un'espressione di query.

Esempio:

using SqlServer; LOWER('AA');

Risultato:

Valore
Aa

Paginazione

Il paging può essere espresso dichiarando le sottoclause SKIP e LIMIT nella clausola ORDER BY.

Esempio:

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

Risultato:

Documento d'identità Nome
10 Adina
11 Agcaoili
12 Aguilar

Raggruppamento

GROUPING BY specifica i gruppi in cui devono essere inseriti gli oggetti restituiti da un'espressione di query (SELECT).

Esempio:

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

Risultato:

nome
Assemblaggio Sedile LL Mountain
Assemblaggio Sella ML Mountain
Assemblaggio Sedile HL Mountain
...

L'operatore di navigazione delle relazioni consente di navigare attraverso la relazione da un'entità (punto di origine) a un'altra (punto di destinazione). NAVIGATE accetta il tipo di relazione qualificato come <namespace>.<tipo di relazione>. Navigate restituisce Ref<T> se la cardinalità di "to end" è 1. Se la cardinalità dell'oggetto to end è n, verrà restituita la proprietà Collection<Ref<T>> .

Esempio:

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

Risultato:

AddressID
1
2
3
...

SELEZIONARE UN VALORE E SELEZIONARE

SELEZIONA VALORE

Entity SQL fornisce la clausola SELECT VALUE per ignorare la costruzione implicita delle righe. In una clausola SELECT VALUE è possibile specificare un solo elemento. Quando viene utilizzata una clausola di questo tipo, non viene creato alcun wrapper di riga intorno agli elementi nella clausola SELECT e una raccolta della forma desiderata può essere prodotta, ad esempio: SELECT VALUE a.

Esempio:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Risultato:

Nome
Gara regolabile
All-Purpose Supporto per biciclette
Cappellino con logo AWC
...

SELEZIONA

Entity SQL fornisce anche il costruttore di riga per costruire righe arbitrarie. SELECT accetta uno o più elementi nella proiezione e genera un record di dati con campi, ad esempio : SELECT a, b, c.

Esempio:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p -- Seleziona il nome e l'ID del prodotto da AdventureWorksEntities.Product

Nome ID prodotto
Gara regolabile 1
All-Purpose Supporto per biciclette 879
Cappellino con logo AWC 712
... ...

ESPRESSIONE CASE

L'espressione case valuta un set di espressioni booleane per determinare il risultato.

Esempio:

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

Risultato:

Valore
Vero

Vedere anche