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

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

Литералы

Строка

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

Ниже приведен пример строкового литерала не в Юникоде:

'hello'
--same as
"hello"

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

Значение
hello

Дата/время

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

Пример:

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

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

Значение
Понедельник, 25.12.06, 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 создает анонимное, структурно типизированное (запись) значение, как в: ROW(1 AS myNumber, 'Name' AS myName).

Пример:

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

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

ProductID Имя.
1 Регулируемая скорость
879 Универсальная подставка для велосипеда
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)

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

ProductID Имя. ProductNumber ...
842 Touring-Panniers, Large PA-T100 ...

Object

Именованные конструкторы типов (именованные) определяемые пользователем объекты, такие как 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

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

SalesOrderDetailID CarrierTrackingNumber КоличествоЗаказа ProductID ...
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

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

Значение
Регулируемая скорость
Универсальная подставка для велосипеда
Кепка с логотипом AWC
...

DEREF

DEREF разыменовывает эталонное значение и создает результат разыменования. Например, следующий запрос возвращает сущности Order для каждой из записей 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

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

Значение
Регулируемая скорость
Универсальная подставка для велосипеда
Кепка с логотипом AWC
...

CREATEREF и KEY

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

Пример:

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

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

ProductID
980
365
771
...

Функции

Canonical

Пространство имен для канонических функций — 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

Функции поставщиков данных (Майкрософт)

Функции , относящиеся к поставщику SqlServer Майкрософт, находятся в пространстве имен.

Пример:

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

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

EmailLen
27
27
26

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

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

Пример:

using SqlServer; LOWER('AA');

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

Значение
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 Adina
11 Agcaoili
12 Aguilar

Группировка

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

Пример:

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

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

name
LL Mountain Seat Assembly
ML Mountain Seat Assembly
HL Mountain Seat Assembly
...

Оператор навигации по связям позволяет переходить по связям от одной сущности (исходный элемент) к другой (конечный элемент). NAVIGATE принимает тип связи, квалифицированный как <пространство> имен.<имя> типа связи. Навигация возвращает значение Ref<T>, если карта inality to end равно 1. Если значение карта inality конца равно 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
...

SELECT VALUE и SELECT

SELECT VALUE

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

Пример:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

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

Имя.
Регулируемая скорость
Универсальная подставка для велосипеда
Кепка с логотипом AWC
...

SELECT

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

Пример:

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

Имя. ProductID
Регулируемая скорость 1
Универсальная подставка для велосипеда 879
Кепка с логотипом AWC 712
... ...

Выражение варианта выбора

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

Пример:

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

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

Значение
TRUE

См. также