FROM 절 - Amazon Redshift

FROM 절

쿼리의 FROM 절은 데이터가 선택되는 테이블 참조(테이블, 뷰, 하위 쿼리)를 나열합니다. 여러 개의 테이블 참조가 목록에 표시되는 경우 FROM 절 또는 WHERE 절에서 알맞은 구문을 사용하여 테이블을 조인해야 합니다. 조인 기준이 지정되지 않은 경우 시스템에서는 쿼리를 크로스 조인(데카르트 곱)으로 처리합니다.

구문

FROM table_reference [, ...]

여기서 table_reference는 다음 중 하나입니다.

with_subquery_table_name [ table_alias ] table_name [ * ] [ table_alias ] ( subquery ) [ table_alias ] table_reference [ NATURAL ] join_type table_reference [ ON join_condition | USING ( join_column [, ...] ) ] table_reference PIVOT ( aggregate(expr) [ [ AS ] aggregate_alias ] FOR column_name IN ( expression [ AS ] in_alias [, ...] ) ) [ table_alias ] table_reference UNPIVOT [ INCLUDE NULLS | EXCLUDE NULLS ] ( value_column_name FOR name_column_name IN ( column_reference [ [ AS ] in_alias ] [, ...] ) ) [ table_alias ] UNPIVOT expression AS value_alias [ AT attribute_alias ]

선택적 table_alias를 사용하여 다음과 같이 테이블 및 복합 테이블 참조와 원하는 경우 해당 열에 임시 이름을 지정할 수 있습니다.

[ AS ] alias [ ( column_alias [, ...] ) ]

파라미터

with_subquery_table_name

WITH 절에서 하위 쿼리에 의해 정의되는 테이블입니다.

table_name

테이블 또는 뷰의 이름입니다.

별칭

테이블 또는 뷰의 임시 대체 이름입니다. 하위 쿼리에서 파생되는 테이블에 대해 별칭을 입력해야 합니다. 다른 테이블 참조에서 별칭은 옵션입니다. AS 키워드는 항상 옵션입니다. 테이블 별칭은 WHERE 절과 같이 쿼리의 다른 부분에 있는 테이블을 편리하게 식별하는 바로 가기의 역할을 합니다. 예:

select * from sales s, listing l where s.listid=l.listid
column_alias

테이블 또는 뷰에 있는 열의 임시 대체 이름입니다.

subquery

테이블로 평가되는 쿼리 표현식입니다. 테이블은 쿼리의 지속 시간 동안만 존재하며 일반적으로 이름 또는 별칭이 주어집니다. 그러나 별칭이 필수는 아닙니다. 하위 쿼리에서 파생되는 테이블의 열 이름을 정의할 수도 있습니다. 하위 쿼리의 결과를 다른 테이블에 조인하고 쿼리의 다른 곳에서 열을 선택하거나 제한하려는 경우 열 별칭의 이름 지정이 중요합니다.

하위 쿼리는 ORDER BY 절을 포함할 수 있지만, LIMIT 또는 OFFSET 절도 지정하지 않으면 ORDER BY 절이 아무런 효과도 없을 수 있습니다.

NATURAL

두 테이블에서 조인 열로서 똑같이 명명된 열의 쌍을 전부 자동으로 사용하는 조인을 정의합니다. 명시적 조인 조건은 필요하지 않습니다. 예를 들어, CATEGORY 및 EVENT 테이블에 모두 CATID로 명명된 열이 있는 경우 이러한 테이블의 자연 조인은 CATID 열에 적용되는 조인입니다.

참고

NATURAL 조인이 지정되어 있지만 조인되는 테이블에 똑같은 이름의 열 쌍이 존재하지 않는 경우 쿼리는 기본적으로 크로스 조인이 됩니다.

join_type

다음과 같은 조인 유형 중 하나를 지정합니다.

  • [INNER] JOIN

  • LEFT [OUTER] JOIN

  • RIGHT [OUTER] JOIN

  • FULL [OUTER] JOIN

  • CROSS JOIN

크로스 조인은 정규화되지 않은 조인으로, 두 테이블의 데카르트 곱을 반환합니다.

내부 및 외부 조인은 정규화된 조인입니다. 이런 조인은 FROM 절에서 ON 또는 USING 구문으로 암시적으로(자연 조인으로) 정규화되거나 WHERE 절 조건으로 암시적으로 정규화됩니다.

내부 조인은 조인 조건이나 조인 열의 목록을 기반으로 일치하는 행만 반환합니다. 외부 조인은 동등한 내부 조인이 반환하는 모든 행과 "왼쪽" 테이블, "오른쪽" 테이블 또는 두 테이블 모두에서 일치하지 않는 행을 반환합니다. 왼쪽 테이블은 처음에 목록으로 표시되는 테이블이고, 오른쪽 테이블은 두 번째로 목록으로 표시되는 테이블입니다. 일치하지 않는 행은 출력 열의 간격을 채우기 위해 NULL 값을 포함합니다.

ON join_condition

조인 열이 ON 키워드 뒤에 나오는 조건으로 규정되는 조인 사양의 유형입니다. 예:

sales join listing on sales.listid=listing.listid and sales.eventid=listing.eventid
USING ( join_column [, ...] )

조인 열이 괄호 안에 묶여 표시되는 조인 사양의 유형입니다. 여러 개의 조인 열이 지정되어 있는 경우 이런 열은 쉼표로 구분됩니다. USING 키워드는 목록에 선행해야 합니다. 예:

sales join listing using (listid,eventid)
PIVOT

읽기 쉬운 형식으로 테이블형 데이터를 표시하기 위해 행에서 열로 출력을 회전합니다. 출력은 여러 열에 가로로 표시됩니다. PIVOT은 집계 표현식을 사용하여 출력 형식을 지정하는 집계가 있는 GROUP BY 쿼리와 유사합니다. 그러나 GROUP BY와 달리 결과는 행 대신 열로 반환됩니다.

PIVOT 및 UNPIVOT을 사용하여 쿼리하는 방법을 보여주는 예는 PIVOT 및 UNPIVOT 예 섹션을 참조하세요.

UNPIVOT

UNPIVOT을 사용하여 열을 행으로 교체 - 이 연산자는 입력 테이블 또는 쿼리 결과의 결과 열을 행으로 변환하여 출력을 더 읽기 쉽게 만듭니다. UNPIVOT은 입력 열의 데이터를 이름 열과 값 열의 두 결과 열로 결합합니다. 이름 열에는 입력의 열 이름이 행 항목으로 포함됩니다. 값 열에는 집계 결과와 같은 입력 열의 값이 포함됩니다. 예를 들어 다양한 카테고리의 항목 수입니다.

UNPIVOT(SUPER)을 사용한 객체 피벗 해제 - 객체 피벗을 해제할 수 있습니다. 여기서 표현식은 다른 FROM 절 항목을 참조하는 SUPER 표현식입니다. 자세한 내용은 객체 피벗 해제 단원을 참조하십시오. JSON 형식 데이터와 같은 반정형 데이터를 쿼리하는 방법을 보여주는 예도 있습니다.

사용 노트

조인 열은 비교 가능한 데이터 형식이 있어야 합니다.

NATURAL 또는 USING 조인은 중간 결과 집합에 조인 열의 각 쌍 중 하나만 유지합니다.

ON 구문이 있는 조인은 중간 결과 집합에 두 조인 열을 모두 유지합니다.

WITH 절 섹션도 참조하십시오.