ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle] SELECT 문장 실행 순서
    RDS/Oracle 2019. 3. 10. 00:21
    반응형

    SELECT 문장 실행 순서

     GROUP BY 절과 ORDER BY 절이 같이 사용될 때 SELECT 문장은 6개의 절로 구성이 되고, SELECT 문장의 수행 단계는 다음과 같습니다.


    1
    2
    3
    4
    5
    6
    SELECT 컬럼명 [ALIAS명]
      FROM 테이블명
     WHERE 조건식
     GROUP BY 컬럼명이나 표현식
    HAVING 그룹조건식
     ORDER BY 컬럼명이나 표현식
    cs

     

    1.FROM 테이블명

    2.WHERE 조건식

    3.GROUP BY 컬럼명이나 표현식

    4.HAVING 그룹조건식

    5.SELECT 컬럼명 [ALIAS명]

    6.ORDER BY 컬럼명이나 표현식


     위 순서는 옵티마이저가 SQL 문장의 SYSTAX, SEMANTIC 에러를 점검하는 순서입니다. 예를 들면 FROM 절에 정의되지 않은 테이블의 컬럼을 WHERE 절, GROUP BY 절, HAVING 절, SELECT 절, ORDER BY 절에서 사용하면 에러가 발생합니다. ORDER BY 절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될 수 있습니다. 단, SELECT DISTINCT를 지정하거나 SQL 문장에 GROUP BY 절이 있거나 또는 SELECT 문에 UNION 연산자가 있으면 열 정의가 SELECT 목록에 표시되어야 합니다. 

     관계형 데이터베이스가 데이터를 메모리에 올릴 때 행 단위로 모든 컬럼을 가져오게 되므로, SELECT 절에서 일부 컬럼만 선택하더라도 ORDER BY 절에서 메모리에 올라와 있는 다른 컬럼의 데이터를 사용할 수 있습니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    -- SELECT 절에 없는 EMP 컬럼을 ORDER BY 절에 사용
    SELECT EMPNO
          , ENAME
      FROM EMP
     ORDER BY MGR;
     
    SELECT EMPNO
          , ENAME
          , MGR
      FROM EMP
     ORDER BY MGR; 
     
    -- GROUP BY 절 사용시 SELECT 절에 일반 컬럼 사용 불가
    SELECT *
      FROM EMP
     GROUP BY JOB
    HAVING COUNT(*> 0
     ORDER BY SAL;
     
    -- GROUP BY 절 사용시 ORDER BY 절에 일반 컬럼 사용 불가
    SELECT JOB
      FROM EMP
     GROUP BY JOB
    HAVING COUNT(*> 0
     ORDER BY SAL; 
     
    -- GROUP BY 절 사용시 ORDER BY 절에 집계 컬럼 사용 가능
    SELECT JOB
      FROM EMP
     GROUP BY JOB
    HAVING COUNT(*> 0
     ORDER BY MAX(EMPNO), MAX(MGR), SUM(SAL), COUNT(DEPTNO), MAX(HIREDATE);  
    cs


    반응형

    'RDS > Oracle' 카테고리의 다른 글

    [Oracle] FROM 절 JOIN 형태  (0) 2019.03.10
    [Oracle] 조인(Join)  (0) 2019.03.10
    [Oracle] ORDER BY 절  (0) 2019.03.10
    [Oracle] GROUP BY, HAVING 절  (0) 2019.03.10
    [Oracle] 함수(Function) - 변환형 함수  (0) 2019.03.03

    댓글

Designed by Tistory.