Compartir a través de


Referencia rápida de Entity SQL

En este tema se proporciona una referencia rápida a las consultas de Entity SQL. Las consultas de este tema se basan en el modelo AdventureWorks Sales.

Literales

Cuerda

Hay literales de cadenas de caracteres Unicode y no Unicode. Las cadenas Unicode van precedidas de una N. Por ejemplo, N'hello'.

A continuación se muestra un ejemplo de un literal de cadena no Unicode:

'hello'
--same as
"hello"

Salida:

Importancia
Hola

Fecha y hora

En los literales DateTime, las partes de fecha y hora son obligatorias. No hay valores predeterminados.

Ejemplo:

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

Salida:

Importancia
25/12/2006 1:01:00 AM

Entero

Los literales enteros pueden ser de tipo Int32 (123), UInt32 (123U), Int64 (123L) y UInt64 (123UL).

Ejemplo:

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

Salida:

Importancia
1
2
3

Otros

Otros literales admitidos por Entity SQL son Guid, Binary, Float/Double, Decimal y null. Los literales NULL de Entity SQL se consideran compatibles con todos los demás tipos del modelo conceptual.

Constructores de tipos

FILA

ROW crea un valor anónimo con tipo estructural (registro) como en: ROW(1 AS myNumber, 'Name' AS myName).

Ejemplo:

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

Salida:

Id. de producto Nombre
1 Carrera ajustable
879 All-Purpose soporte para bicicletas
712 Gorra con logotipo de AWC
... ...

MULTISET

MULTISET construye colecciones, como:

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

Ejemplo:

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

Salida:

Id. de producto Nombre Número de Producto
842 Touring-Panniers, Large PA-T100

Objeto

Constructor de tipos nombrados construye objetos definidos por el usuario, como person("abc", 12).

Ejemplo:

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

Salida:

SalesOrderDetailID Número de Seguimiento del Transportista CantidadPedido Id. de producto ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Referencias

REF

REF crea una referencia a una instancia de tipo de entidad. Por ejemplo, la consulta siguiente devuelve referencias a cada entidad Order del conjunto de entidades Orders:

SELECT REF(o) AS OrderID FROM Orders AS o

Salida:

Importancia
1
2
3
...

En el ejemplo siguiente se usa el operador de extracción de propiedades (.) para tener acceso a una propiedad de una entidad. Cuando se usa el operador de extracción de propiedades, la referencia se desreferencia automáticamente.

Ejemplo:

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

Salida:

Importancia
Carrera ajustable
All-Purpose soporte para bicicletas
Gorra con logotipo de AWC
...

DEREF

DEREF desreferencia un valor de referencia y genera el resultado de esa desreferencia. Por ejemplo, la consulta siguiente genera las entidades Order para cada entidad Order en el conjunto de entidades Orders: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2.

Ejemplo:

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

Salida:

Importancia
Carrera ajustable
All-Purpose soporte para bicicletas
Gorra con logotipo de AWC
...

CREATEREF y KEY

CREATEREF crea una referencia pasando una clave. KEY extrae la parte clave de una expresión con referencia de tipo.

Ejemplo:

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

Salida:

Id. de producto
980
365
771
...

Funciones

Canónico

El espacio de nombres de las funciones canónicas es Edm, como en Edm.Length("string"). No es necesario especificar el espacio de nombres a menos que se importe otro espacio de nombres que contenga una función con el mismo nombre que una función canónica. Si dos espacios de nombres tienen la misma función, el usuario debe especificar el nombre completo.

Ejemplo:

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

Salida:

NameLen
6
6
5

Específicas de proveedores de Microsoft

Las funciones específicas del proveedor de Microsoft están en el SqlServer espacio de nombres.

Ejemplo:

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

Salida:

EmailLen
27
27
26

Espacios de nombres

USING especifica los espacios de nombres usados en una expresión de consulta.

Ejemplo:

using SqlServer; LOWER('AA');

Salida:

Importancia
aa

Paginación

La paginación se puede expresar mediante la declaración de las subcláusulas SKIP y LIMIT a la cláusula ORDER BY.

Ejemplo:

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

Salida:

identificación Nombre
10 Adina
11 Agcaoili
12 Aguilar

Agrupación

GROUPING BY especifica los grupos en los que se colocarán los objetos devueltos por una expresión de consulta (SELECT).

Ejemplo:

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

Salida:

nombre
Montaje de asientos de montaña LL
Ensamblado de asientos de montaña de ML
Ensamblado de asientos de montaña HL
...

El operador de navegación por relaciones permite navegar por la relación de un tipo de entidad (extremo inicial) a otro (extremo final). NAVIGATE toma el tipo de relación calificado como <espacio de nombres>.<nombre de tipo de relación>. Navigate devuelve Ref<T> si la cardinalidad del extremo final es 1. Si la cardinalidad del extremo final es n, se devolverá Collection<Ref<T>>.

Ejemplo:

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

Salida:

AddressID
1
2
3
...

SELECT VALUE y SELECT

SELECCIONAR VALOR

Entity SQL proporciona la cláusula SELECT VALUE para omitir la construcción de fila implícita. Solo se puede especificar un elemento en una cláusula SELECT VALUE. Cuando se usa dicha cláusula, no se construye ningún contenedor de filas alrededor de los elementos de la cláusula SELECT y se puede generar una colección de la forma deseada, por ejemplo: SELECT VALUE a.

Ejemplo:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Salida:

Nombre
Carrera ajustable
All-Purpose soporte para bicicletas
Gorra con logotipo de AWC
...

Seleccionar

Entity SQL también proporciona el constructor de filas para construir filas arbitrarias. SELECT toma uno o varios elementos de la proyección y da como resultado un registro de datos con campos, por ejemplo: SELECT a, b, c.

Ejemplo:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product como salida p:

Nombre Id. de producto
Carrera ajustable 1
All-Purpose soporte para bicicletas 879
Gorra con logotipo de AWC 712
... ...

EXPRESIÓN CASE

La expresión case evalúa un conjunto de expresiones booleanas para determinar el resultado.

Ejemplo:

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

Salida:

Importancia
VERDADERO

Consulte también