Поделиться через


Краткий справочник по Entity SQL

В этом разделе содержится краткая ссылка на запросы Entity SQL. Запросы в этом разделе основаны на модели AdventureWorks Sales.

Литералы

Струна

Существуют строковые литералы Юникода и символьные литералы, отличные от Юникода. Строки Юникода предопределяются N. Например, N'hello'.

Ниже приведен пример строкового литерала, не использующего Unicode.

'hello'
--same as
"hello"

Выходные данные:

Ценность
Привет

дата и время

В литералах DateTime обязательны как части даты, так и времени. Значения по умолчанию отсутствуют.

Пример:

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

Выходные данные:

Ценность
25.12.2006 01:01:00

Целое число

Целые литералы могут иметь тип Int32 (123), UInt32 (123U), Int64 (123L) и UInt64 (123UL).

Пример:

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

Выходные данные:

Ценность
1
2
3

Другое

Другие литералы, поддерживаемые Entity SQL, : Guid, Binary, Float/Double, Decimal и null. Литералы NULL в Entity SQL считаются совместимыми с каждым другим типом в концептуальной модели.

Конструкторы типов

РЯД

Row создает анонимное, структурно типизированное (запись) значение, как в: ROW(1 AS myNumber, 'Name' AS myName).

Пример:

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

Выходные данные:

Идентификатор продукта Имя
1 Настраиваемая гонка
879 All-Purpose стойка для велосипеда
712 Кепка с логотипом AWC
... ...

MULTISET

MultiSET создает коллекции, такие как:

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

Пример:

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

Выходные данные:

Идентификатор продукта Имя Номер продукта
842 Туринг-Панниерс, большой PA-T100

Объект

Конструктор типа с именем создает (именованные) объекты, определяемые пользователем, такие как person("abc", 12).

Пример:

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

Выходные данные:

ИдентификаторПодробностейЗаказа Номер отслеживания перевозчика КоличествоЗаказа Идентификатор продукта ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Ссылки

REF

REF создает ссылку на экземпляр типа сущности. Например, следующий запрос возвращает ссылки на каждую сущность Order в наборе сущностей Orders:

SELECT REF(o) AS OrderID FROM Orders AS o

Выходные данные:

Ценность
1
2
3
...

В следующем примере оператор извлечения свойств (.) используется для доступа к свойству сущности. При использовании оператора извлечения свойств ссылка автоматически преобразуется.

Пример:

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

Выходные данные:

Ценность
Настраиваемая гонка
All-Purpose стойка для велосипеда
Кепка с логотипом AWC
...

DEREF

DEREF разыменовывает эталонное значение и создает результат разыменования. Например, следующий запрос создает сущности Order для каждого заказа в наборе сущностей Orders: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..

Пример:

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

Выходные данные:

Ценность
Настраиваемая гонка
All-Purpose стойка для велосипеда
Кепка с логотипом AWC
...

CREATEREF AND KEY

CREATEREF создает ссылку, передавая ключ. КЛЮЧ извлекает ключевую часть выражения со ссылкой на тип.

Пример:

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

Выходные данные:

Идентификатор продукта
980
365
771
...

Функции

Канонический

Пространство имен для канонических функций — Edm, как и в Edm.Length("string"). Не нужно указывать пространство имен, если не импортируется другое пространство имен, содержащее функцию с тем же именем, что и каноническая функция. Если два пространства имен имеют одну и ту же функцию, пользователь должен указать полное имя.

Пример:

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

Выходные данные:

NameLen
6
6
5

Microsoft Provider-Specific

Специфичные для поставщика Майкрософт функции находятся в пространстве имен SqlServer.

Пример:

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

Выходные данные:

EmailLen
двадцать семь
двадцать семь
26

Пространства имен

USING задает пространства имен, используемые в выражении запроса.

Пример:

using SqlServer; LOWER('AA');

Выходные данные:

Ценность
Аа

Пейджинг

Разбиение на страницы можно выразить, указав подвыражения SKIP и LIMIT в предложении ORDER BY.

Пример:

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

Выходные данные:

Идентификатор Имя
10 Адина
11 Агкаоили
12 Агилар

Группировка

GROUPING BY указывает группы, в которые помещаются объекты, возвращаемые выражением запроса (SELECT).

Пример:

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

Выходные данные:

имя
Сборка сиденья LL Mountain
Сборка сиденья для горных велосипедов ML
Сборка сиденья HL Mountain
...

Оператор навигации по отношениям позволяет перемещаться по связи от одной сущности (от начальной точки) к другой (к конечной точке). NAVIGATE принимает тип связи, указанный как <пространство имен>.<имя> типа связи. Навигация возвращает результат Ref<T> , если конечная точка имеет кратность 1. Если значение кратности конца равно n, возвращается коллекция<Ref<T>> .

Пример:

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

Выходные данные:

AddressID
1
2
3
...

ВЫБРАТЬ ЗНАЧЕНИЕ И ВЫБРАТЬ

Выбрать значение

Entity SQL предоставляет предложение SELECT VALUE, чтобы пропустить неявное построение строк. В предложении SELECT VALUE можно указать только один элемент. Если такое предложение используется, оболочка строк не создается вокруг элементов в предложении SELECT, а коллекцию требуемой фигуры можно создать, например: SELECT VALUE a

Пример:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Выходные данные:

Имя
Настраиваемая гонка
All-Purpose стойка для велосипеда
Кепка с логотипом AWC
...

ВЫБЕРИТЕ

Entity SQL также предоставляет конструктор строк для создания произвольных строк. SELECT принимает один или несколько элементов в проекции и приводит к записи данных с полями, например: SELECT a, b, c

Пример:

SELECT p.Name, p.ProductID ИЗ AdventureWorksEntities.Product как p Результат:

Имя Идентификатор продукта
Настраиваемая гонка 1
All-Purpose стойка для велосипеда 879
Кепка с логотипом AWC 712
... ...

ВЫРАЖЕНИЕ CASE

Выражение case вычисляет набор логических выражений для определения результата.

Пример:

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

Выходные данные:

Ценность
ПРАВДА

См. также