Partager via


Aide-mémoire sur Entity SQL

Cette rubrique fournit un aide-mémoire sur les requêtes Entité SQL. Les requêtes de cette rubrique sont basées sur le modèle de vente Adventure Works Sales Model.

Littéraux

Chaîne

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

Voici un exemple de chaîne littérale Unicode :

'hello'
--same as
"hello"

Sortie :

Valeur

hello

DateTime

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

Exemple :

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

Sortie :

Valeur

12/25/2006 1:01:00 AM

Entier

Les littéraux Integer (d'entier) peuvent être de type Int32 ou Int64.

Exemple :

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

Sortie :

Valeur

1

2

3

Autres

Entité SQL prend également en charge d'autres littéraux notamment : Guid, Binary, Float/Double, Decimal et null. Les littéraux NULL dans Entité SQL sont considérés compatibles avec tous les autres types dans le modèle EDM (Entity Data Model).

Constructeurs de type

ROW

ROW (Entity SQL) construit une valeur anonyme, 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 :

ProductID Name

1

Adjustable Race

879

All-Purpose Bike Stand

712

AWC Logo Cap

...

...

MULTISET

MULTISET (Entity SQL) 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 :

ProductID Nom ProductNumber

842

Touring-Panniers, Large

PA-T100

Objet

Constructeur de type nommé (Entity SQL) construit des objets (nommés) 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 CarrierTrackingNumber OrderQty ProductID

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 entité. Par exemple, la requête suivante retourne les références à chaque entité Order dans le jeu d'entités Orders : select ref(o) from LOB.Orders as o. L'exemple suivant utilise l'opérateur d'extraction de propriété (.) pour accéder à une propriété d'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

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

DEREF

DEREF supprime une valeur de référence et génère le résultat de ce 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

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

CREATEREF et KEY

CREATEREF crée une référence qui passe une clé. KEY extrait la partie clé d'une expression avec la référence de type.

Exemple :

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

Sortie :

ProductID

980

365

771

...

Fonctions

Canoniques

L'espace de noms des 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é et qu'il contient une fonction portant le même nom qu'une fonction canonique. Si deux espaces de noms partagent 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

Pagination

La pagination peut s'effectuer en déclarant des sous-clauses SKIP et LIMIT de la clause ORDER BY (Entity SQL).

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 Name

10

Adina

11

Agcaoili

12

Aguilar

Regroupement

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

Exemple :

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

Sortie :

name

LL Mountain Seat Assembly

ML Mountain Seat Assembly

HL Mountain Seat Assembly

...

Navigation

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 accepte le type de relation nommé <espace de noms>.<nom du type de relation>. NAVIGATE retourne Ref<T> si le cardinalité de la terminaison To est 1. Si le cardinalité de la terminaison To est n, Collection<Ref<T>> est retourné.

Exemple :

SELECT a.AddressID, (SELECT VALUE EREF(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

SELECT VALUE

Entité 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 wrapper de ligne n'est construit autour des éléments de la clause SELECT et une collection de la forme souhaitée peut être générée, par exemple : SELECT VALUE a.

Exemple :

SELECT VALUE p.Name FROM AdventureWorksEntities.Product as p

Sortie :

Nom

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

SELECT

Entité SQL fournit également le constructeur de ligne pour construire des lignes arbitraires. SELECT extrait un ou plusieurs éléments de la projection et produit 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:

Name ProductID

Adjustable Race

1

All-Purpose Bike Stand

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

TRUE

Voir aussi

Concepts

Référence Entity SQL
Vue d'ensemble d'Entity SQL