Partager via


Informations de référence rapides sur Entity SQL

Cette rubrique fournit une référence rapide aux requêtes Entity SQL. Les requêtes de cette rubrique sont basées sur le modèle AdventureWorks Sales.

Littéraux

Chaîne

Les chaînes de caractères littérales peuvent être au format Unicode ou non-Unicode. Les chaînes Unicode sont précédées de N. Par exemple, N'hello'.

Exemple de littéral de chaîne non-Unicode :

'hello'
--same as
"hello"

Sortie:

Valeur
Bonjour

Date et heure

Dans les littéraux DateTime, les parties date et heure sont obligatoires. Il n’existe aucune valeur par défaut.

Exemple:

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

Sortie:

Valeur
25/12/2006 1:01:00 du matin

Nombre entier

Les littéraux entiers peuvent être de type Int32 (123), UInt32 (123U), Int64 (123L) et UInt64 (123UL).

Exemple:

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

Sortie:

Valeur
1
2
3

Autres

D’autres littéraux pris en charge par Entity SQL sont Guid, Binary, Float/Double, Decimal et null. Les littéraux Null dans Entity SQL sont considérés comme compatibles avec tous les autres types du modèle conceptuel.

Constructeurs de type

RANGÉE

ROW construit une valeur anonyme et structurellement typée (enregistrement) comme dans : ROW(1 AS myNumber, 'Name' AS myName).

Exemple:

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

Sortie:

Identifiant produit Nom
1 Course réglable
879 stand de vélo All-Purpose
712 AWC Logo Cap
... ...

MULTISET

MULTISET construit des collections, telles que :

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

Exemple:

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

Sortie:

Identifiant produit Nom Numéro de Produit
842 Touring-Panniers, Grand PA-T100

Objet

Un constructeur de type nommé construit des objets définis par l’utilisateur, tels que person("abc", 12).

Exemple:

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

Sortie:

SalesOrderDetailID Numéro de suivi du transporteur Quantité de commande Identifiant produit ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

références

REF

REF crée une référence à une instance de type d’entité. Par exemple, la requête suivante retourne des références à chaque entité Order dans l’ensemble d’entités Orders :

SELECT REF(o) AS OrderID FROM Orders AS o

Sortie:

Valeur
1
2
3
...

L’exemple suivant utilise l’opérateur d’extraction de propriété (.) pour accéder à une propriété d’une entité. Lors de l'utilisation de l'opérateur d'extraction de propriété, la référence est automatiquement supprimée.

Exemple:

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

Sortie:

Valeur
Course réglable
stand de vélo All-Purpose
AWC Logo Cap
...

DEREF

DEREF déréférence une valeur de référence et produit le résultat de cette déréférencement. Par exemple, la requête suivante génère les entités Order pour chaque élément Order du jeu d'entités Orders : SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2.

Exemple:

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

Sortie:

Valeur
Course réglable
stand de vélo All-Purpose
AWC Logo Cap
...

CREATEREF et KEY

CREATEREF crée une référence en passant une clé. KEY extrait la partie clé d’une expression avec une référence de type.

Exemple:

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

Sortie:

Identifiant produit
980
365
771
...

Fonctions

Canonique

L’espace de noms pour les fonctions canoniques est Edm, comme dans Edm.Length("string"). Vous n’avez pas besoin de spécifier l’espace de noms, sauf si un autre espace de noms est importé qui contient une fonction portant le même nom qu’une fonction canonique. Si deux espaces de noms ont la même fonction, l’utilisateur doit spécifier le nom complet.

Exemple:

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

Sortie:

NameLen
6
6
5

Spécifiques au fournisseur Microsoft

Les fonctions spécifiques au fournisseur Microsoft se trouvent dans l'espace de noms SqlServer.

Exemple:

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

Sortie:

EmailLen
27
27
26

Espaces de noms

USING spécifie les espaces de noms utilisés dans une expression de requête.

Exemple:

using SqlServer; LOWER('AA');

Sortie:

Valeur
Aa

Feuilletage

La pagination peut être spécifiée en déclarant les sous-clauses SKIP et LIMIT dans la clause ORDER BY.

Exemple:

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

Sortie:

id Nom
10 Adina
11 Agcaoili
12 Aguilar

Regroupement

GROUPING BY spécifie les groupes dans lesquels les objets retournés par une expression de requête (SELECT) doivent être placés.

Exemple:

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

Sortie:

nom
LL Mountain Seat Assembly
ML Mountain Seat Assembly
HL Mountain Seat Assembly
...

L'opérateur de navigation de relations vous permet de parcourir la relation entre une entité (terminaison From) et une autre entité (terminaison To). NAVIGATE prend le type de relation qualifié comme <namespace>.<nom du type de relation>. Navigate retourne Ref<T> si la cardinalité de la terminaison To est 1. Si la cardinalité de la terminaison To est n, la valeur retournée est Collection<Ref<T>>.

Exemple:

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

Sortie:

AddressID
1
2
3
...

SELECT VALUE et SELECT

SÉLECTIONNER UNE VALEUR

Entity SQL fournit la clause SELECT VALUE pour ignorer la construction de ligne implicite. Un seul élément peut être spécifié dans une clause SELECT VALUE. Lorsqu'une telle clause est utilisée, aucun contour de ligne n’est construit autour des éléments de la clause SELECT, et une collection de la forme souhaitée peut être produite, par exemple : SELECT VALUE a.

Exemple:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Sortie:

Nom
Course réglable
stand de vélo All-Purpose
AWC Logo Cap
...

Sélectionner

Entity SQL fournit également le constructeur de ligne pour construire des lignes arbitraires. SELECT prend un ou plusieurs éléments dans la projection et génère un enregistrement de données avec des champs, par exemple : SELECT a, b, c.

Exemple:

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

Nom Identifiant produit
Course réglable 1
stand de vélo All-Purpose 879
AWC Logo Cap 712
... ...

Expression CASE

L’expression case évalue un ensemble d’expressions booléennes pour déterminer le résultat.

Exemple:

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

Sortie:

Valeur
VRAI

Voir aussi