FROM 절

일반
설명

FROM 절은 질의에서 데이터를 조회하고자 하는 테이블을 지정한다. 조회할 수 있는 경로는 다음과 같다.

• 개별 테이블

• 부질의

• 유도 테이블

구문

FROM from_specification

from_specification :
table_spec [ {, table_spec | outerjoin_table_spec }...]

table_spec :
single_table_spec [ correlation ] [ WITH (lock_hint [ {, lock_hint } ] ) ]
( single _table_spec [ {, single_table_spec}...] )
CLASS table_name [ correlation ]
subquery correlation
TABLE (expression) correlation

outerjoin_table_spec :
{ LEFT | RIGHT } [OUTER ] JOIN table_spec ON search_condition

single_table_spec :
[ ONLY ] table_name
ALL table_name [ ( EXCEPT table_spec ) ]

correlation :
[ AS ] identifier

lock_hint :
READ UNCOMMITTED

구문 설명
유도 테이블

질의문에서 FROM 절의 테이블 명세 부분에 부질의가 사용될 수 있다. 이런 형태의 부질의는 부질의 결과가 테이블로 취급되는 유도 테이블(derived table)을 만든다. 유도 테이블을 만드는 부질의가 사용될 때 반드시 상관 명세가 사용되어야 한다.
또한 유도 테이블은 집합 값을 갖는 속성의 개별 원소를 접근하는데 사용된다. 이 경우 집합 값의 한 원소는 유도 테이블에서 하나의 인스턴스로 생성된다.

부질의 유도 테이블
설명

유도 테이블의 각 인스턴스는 FROM 절에 주어진 부질의의 결과로부터 만들어진다.

구문

FROM (subquery) [ AS ] derived_table_name [( column_name [ {, column_name }_ ] )]

부질의로부터 생성되는 유도 테이블은 임의의 개수의 컬럼과 인스턴스를 가질 수 있다.

단, column_name 파라미터의 개수와 subquery에서 만들어지는 컬럼의 개수는 일치해야 한다.

예제

SELECT SUM(n) FROM (SELECT gold FROM participant WHERE nation_code='KOR'
UNION ALL SELECT silver FROM participant WHERE nation_code='JPN') AS t(n);
=== <Result of SELECT Command in Line 2> ===
  sum(n)
========
      82
1 rows selected.

SELECT nation_code, host_year, gold
FROM participant p
WHERE gold > ( SELECT AVG(s)
            FROM ( SELECT silver + bronze
            FROM participant
            WHERE nation_code = p.nation_code
            AND silver > 0
            AND bronze > 0
          ) AS t(s));
=== <Result of SELECT Command in Line 1> ===

  nation_code          host_year          gold
=========================================
  'JPN'                        2004                16
  'CHN'                       2004                32
  'DEN'                       1996                  4
  'ESP'                       1992                 13    

4 rows selected.