Entity SQL 빠른 참조

이 항목에서는 Entity SQL 쿼리에 대한 빠른 참조를 제공합니다. 이 항목의 쿼리는 AdventureWorks Sales 모델을 기반으로 합니다.

리터럴

문자열

유니코드 문자열 리터럴과 유니코드가 아닌 문자열 리터럴이 있습니다. 유니코드 문자열은 예를 들어 N'hello'와 같이 앞에 N이 붙습니다.

다음은 비유니코드 문자열 리터럴의 예제입니다.

'hello'
--same as
"hello"

출력

hello

DateTime

DateTime 리터럴에서는 날짜와 시간 부분 모두 필수 요소입니다. 기본값은 없습니다.

예시:

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

출력

12/25/2006 1:01:00 AM

정수

Integer 리터럴은 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 등입니다. Entity SQL에서 Null 리터럴은 개념적 모델의 다른 모든 형식과 호환 가능한 것으로 간주됩니다.

형식 생성자

ROW

ROWROW(1 AS myNumber, 'Name' AS myName). 형태로 구조적으로 형식화된 레코드 값을 생성합니다.

예시:

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

출력

ProductID 속성
1 Adjustable Race
879 All-Purpose Bike Stand
712 AWC Logo Cap
... ...

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 OrderQty ProductID ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

참조

REF

REF는 엔터티 형식 인스턴스에 대한 참조를 만듭니다. 예를 들어, 다음 쿼리는 주문 엔터티 집합의 개별 주문 엔터티에 대한 참조를 반환합니다.

SELECT REF(o) AS OrderID FROM Orders AS o

출력

1
2
3
...

다음 예제에서는 속성 추출 연산자(.)를 사용하여 엔터티의 속성에 액세스합니다. 속성 추출 연산자가 사용되면 해당 참조가 자동으로 역참조됩니다.

예시:

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

출력

Adjustable Race
All-Purpose Bike Stand
AWC Logo Cap
...

DEREF

DEREF는 참조 값을 역참조하고 이 역참조의 결과를 생성합니다. 예를 들어, SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2 쿼리는 Orders 엔터티 집합의 개별 Order별로 Order 엔터티를 생성합니다.

예시:

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

출력

Adjustable Race
All-Purpose Bike Stand
AWC Logo Cap
...

CREATEREF 및 KEY

CREATEREF는 키를 전달하는 참조를 만듭니다. KEY는 형식 참조가 있는 식의 키 부분을 추출합니다.

예시:

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

출력

ProductID
980
365
771
...

함수

Canonical

정식 함수의 네임스페이스는 Edm.Length("string")에서와 같이 Edm입니다. 정식 함수와 이름이 같은 함수가 포함된 다른 네임스페이스를 가져오지 않는 한, 네임스페이스를 지정할 필요가 없습니다. 두 네임스페이스의 함수가 동일한 경우 사용자는 전체 이름을 지정해야 합니다.

예시:

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

출력

NameLen
6
6
5

Microsoft 공급자 특정

Microsoft 공급자 특정 함수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

페이징

페이징은 SKIPLIMIT 하위 절을 ORDER BY 절에 선언하는 방법으로 표현할 수 있습니다.

예시:

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

출력

ID 이름
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
...

관계 탐색 연산자를 사용하여 엔터티 간의(시작 End에서 끝 End) 관계를 탐색할 수 있습니다. NAVIGATE는 <네임스페이스>.<관계 형식 이름>으로 한정된 관계형 형식을 사용합니다. 끝 End의 카디널리티가 1인 경우 반환 값은 Ref<T>이고, 끝 End의 카디널리티가 n인 경우 반환 값은 Collection<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

출력

이름
Adjustable Race
All-Purpose Bike Stand
AWC Logo Cap
...

SELECT

Entity SQL에서는 임의의 행을 만드는 행 생성자도 제공합니다. SELECT는 SELECT a, b, c와 같이 프로젝션의 요소를 하나 이상 사용하며 필드가 있는 데이터 레코드를 생성합니다.

예시:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p 출력:

이름 ProductID
Adjustable Race 1
All-Purpose Bike Stand 879
AWC Logo Cap 712
... ...

CASE 식

CASE 식은 부울 식 집합을 계산하여 결과를 결정합니다.

예시:

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

출력

TRUE

참고 항목