다음을 통해 공유


SELECT(Entity SQL)

쿼리 결과로 반환될 요소를 지정합니다.

SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr 
      [{ , aliasedExpr }]
or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr

인수

  • ALL
    결과 집합에 중복 항목이 나타날 수 있음을 지정합니다. ALL이 기본값입니다.
  • DISTINCT
    결과 집합에 고유한 결과만 나타날 수 있음을 지정합니다.
  • VALUE
    항목 하나만 지정할 수 있으며 행 래퍼를 추가하지 않습니다.
  • topSubclause
    쿼리에서 첫 번째로 반환되는 결과의 개수를 나타내며 top (expr) 형태로 표시되는 모든 유효한 식입니다.

    ORDER BY(Entity SQL) 연산자의 LIMIT 매개 변수를 사용해도 결과 집합에서 처음 n개의 항목을 선택할 수 있습니다.

  • aliasedExpr
    다음 형태의 식입니다.

    expr 예: identifier | expr

  • expr
    리터럴 또는 식입니다.

설명

SELECT 절은 FROM(Entity SQL), GROUP BY(Entity SQL)HAVING(Entity SQL) 절이 계산된 후에 계산됩니다. SELECT 절은 현재 범위 내에 있는 항목만 참조할 수 있으며, FROM 절 또는 외부 범위에서 참조할 수 있습니다. GROUP BY 절이 지정된 경우, SELECT 절에서는 GROUP BY 키의 별칭만 참조할 수 있습니다. FROM 절 항목에 대한 참조는 집계 함수에서만 허용됩니다.

SELECT 키워드 다음에 나오는 하나 이상의 쿼리 식을 나열한 목록은 선택 목록이라고 하고 공식적으로는 프로젝션이라고도 합니다. 가장 일반적인 형태의 프로젝션은 단일 쿼리 식입니다. collection1 컬렉션에서member1멤버를 선택하면 다음 예제와 같이 collection1의 각 개체에 대한 모든member1값이 포함된 새로운 컬렉션이 생성됩니다.

SELECT collection1.member1 FROM collection1

예를 들어, customersstring 형식의Name속성이 포함된 Customer 형식의 컬렉션인 경우 customers에서 Name을 선택하면 다음 예제와 같이 문자열 컬렉션이 생성됩니다.

SELECT customers.Name FROM customers AS c

FULL, INNER, LEFT, OUTER, ON, RIGHT 등의 JOIN 구문을 사용할 수도 있습니다. ON은 내부 조인에 필수적이지만 크로스 조인에는 사용할 수 없습니다.

ROW 및 VALUE SELECT 절

Entity SQL 에서는 두 가지 변형의 SELECT 절을 지원합니다. 하나는 행 선택으로서, SELECT 키워드로 식별됩니다. 이 절은 프로젝션될 값을 하나 이상 지정하는 데 사용됩니다. 반환되는 값 주위에 행 래퍼가 암시적으로 추가되므로, 쿼리 식의 결과는 항상 행의 multiset입니다.

행의 각 쿼리 식에서는 별칭이 지정되어야 합니다. 별칭이 지정되지 않은 경우 Entity SQL 에서는 별칭 생성 규칙에 따라 별칭을 생성합니다.

SELECT 절의 다른 변형은 값 선택으로서, SELECT VALUE 키워드로 식별됩니다. 이 절은 항목 하나만 지정할 수 있으며 행 래퍼를 추가하지 않습니다.

행 선택은 다음 예제에서 보여 주는 것처럼 항상 VALUE SELECT로 표현할 수 있습니다.

SELECT 1 AS a, "abc" AS b, a+34 AS c
SELECT VALUE ROW(1 AS a, "abc" AS b, a+34 AS c) 

ALL 및 DISTINCT 한정자

Entity SQL 에서 지원되는 두 가지 SELECT 절 모두 ALL 한정자나 DISTINCT 한정자의 사양을 허용합니다. DISTINCT 한정자가 지정된 경우, 쿼리 식에서 생성되는 컬렉션에서 중복 항목이 제거됩니다(SELECT 절까지 포함). ALL 한정자가 지정된 경우에는 중복 항목이 제거되지 않으며, ALL이 기본값입니다.

Transact-SQL과의 차이점

Transact-SQL과는 달리, Entity SQL 에서는 SELECT 절에 * 인수의 사용을 지원하지 않습니다. 대신 Entity SQL 에서는 다음 예제에서 보여 주는 것처럼 쿼리를 통해 FROM 절에서 컬렉션 별칭을 참조하여 전체 레코드를 프로젝션할 수 있습니다.

SELECT * FROM T1, T2

위의 Transact-SQL 쿼리 식은 다음과 같이 Entity SQL 로 표현됩니다.

SELECT a1, a2 FROM T1 AS a1, T2 AS a2

예제

다음 Entity SQL 쿼리에서는 SELECT 연산자를 사용하여 쿼리에서 반환될 요소를 지정합니다. 쿼리는 AdventureWorks Sales 모델을 기반으로 합니다. 이 쿼리를 컴파일하고 실행하려면 다음 단계를 수행하십시오.

  1. 방법: StructuralType 결과를 반환하는 쿼리 실행(EntityClient)의 절차를 수행합니다.

  2. 다음 쿼리를 ExecuteStructuralTypeQuery 메서드에 인수로 전달합니다.

SELECT VALUE product FROM AdventureWorksEntities.Products 
    AS product where product.ListPrice < @price

참고 항목

참조

TOP(Entity SQL)

개념

쿼리 식(Entity SQL)
Entity SQL 참조