Oracle - SUBQUERY

 

1. 1999의 스칼라 서브 쿼리 정의

2. SELECT 리스트에서의 서브 쿼리

3. WHERE 절에서의 스칼라 서브 쿼리

4. ORDER BY 절에서의 스칼라 서브 쿼리

5. CASE 수식에서의 스칼라 서브 쿼리

6. 함수에서의 스칼라 서브 쿼리

 

 

1999의 스칼라 서브 쿼리 정의

정의)

- 스칼라 서브 쿼리는 쿼리 수식으로부터 유도된 스칼라 값을 지정하기 위해 사용됩니다.

- Oracle8i 에서는 다음과 같이 제한된 경우에만 지원이 되었습니다.

    .  삽입 문장의 VALUES 리스트

    .   데이터 형 생성자에 대한 인자

- Oracle9i에서 스칼라 서브 쿼리는 유효한 수식이 쓰일 수 있는 모든 곳에서 사용될 수 있습니다.

- 스칼라 서브 쿼리는 오직 하나의 값만 반환합니다.

- 반환되는 값의 데이터 형은 서브 쿼리에서 선택되는 데이터 형과 일치합니다.

 

사용)

- GROUP BY를 제외한 모든 SELECT 절

- INSERT 문의 VALUES 절

- UPDATE 문의 SET 절 및 WHERE 절

- DECODE 및 CASE의 조건 내지 수식

 

예) SELECT 리스트에서의 서브 쿼리

SELECT employee_id, last_name, (

           SELECT department_name

         FROM departments d

  WHERE e.department_id = d.department_id

 ) department_name

  FROM employees e

ORDER BY department;

 

 

예) WHERE 절에서의 스칼라 서브 쿼리

 

SELECT employee_id, last_name

  FROM employees e

 WHERE ((SELECT location_id

                  FROM departments d

                 WHERE e.department_id = d.department_id)                      =

        (SELECT location_id

           FROM locations l

                 WHERE STATE_province = 'California')

        );

 

예) ORDER BY 절에서의 스칼라 서브 쿼리

 

SELECT employee_id, last_name

      FROM employees e

    ORDER BY (

  SELECT department_name

        FROM departments d

       WHERE e.department_id = d.department_id

);

 

예) CASE 수식에서의 스칼라 서브 쿼리

 

 SELECT employee_id, last_name,

       (CASE

              WHEN department_id IN

                    (SELECT department_id FROM departments

                      WHERE location_id = 1800)

                 THEN 'Canada' ELSE 'other'

        END) location

   FROM employees;

 

예) 함수에서의 스칼라 서브 쿼리

 

SELECT last_name, SUBSTR (

           (SELECT department_name

                  FROM departments d

                 WHERE d.department_id = e.department_id),

                1, 10) department

  FROM employees e;

   

 

 

'(DB) Oracle > SQL' 카테고리의 다른 글

Oracle - 조직 TREE SQL 1  (0) 2017.01.18
Oracle - SQL문에서_한글검색_방법  (0) 2017.01.18
Oracle - 예제_FOR_UPDATE_WAIT  (0) 2017.01.18
Oracle - 예제_CASE_예제1  (0) 2017.01.18
Oracle - 예제_JOIN  (0) 2017.01.18
Posted by 농부지기
,