DB/SQL 전문가 가이드

[과목 II 1장 6절] ORDER BY절

꾸준함. 2025. 3. 24. 22:11

1. ORDER BY 절

  • ORDER BY 절은 SQL 문장으로 조회한 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬 및 출력하는 데 사용
  • ORDER BY 절에 칼럼명 대신에 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능
  • 별도로서를 나타내는 정수도 사용 가능
  • 별도로 정렬 방식을 지정하지 않으면 기본적으로 오름차순이 적용되며, SQL 문장의 제일 마지막에 위치
  • ORDER BY 절은 두 가지의 정렬 방식이 있음
    • ASC (Ascending): 조회한 데이터를 오름차순으로 정렬 (Default 값이기 때문에 생략 가능)
    • DESC (Descending): 죄한 데이터를 내림차순으로 정렬

 

 

  • ORDER BY 절의 특징은 다음과 같음
    • 기본적인 정렬 순서는 오름차순 (ASC)
    • 숫자형 데이터 타입은 오름차순으로 정렬했을 경우에 가장 작은 값부터 출력
    • 날짜형 데이터 타입은 오름차순으로 정렬했을 경우 날짜 값이 가장 빠른 값이 먼저 출력됨
    • Oracle에서는 NULL 값을 가장 큰 값으로 간주해 오름차순으로 정렬했을 경우에는 가장 마지막에, 내림차순으로 정렬했을 경우에는 가장 먼저 위치함
    • 반면, SQL Server에서는 NULL 값을 가장 작은 값으로 간주하므로 오름차순으로 정렬했을 경우네는 가장 머저, 내림차순으로 정렬했을 경우에는 가장 마지막에 위치함

 

2. SELECT 문장 실행 순서

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


 

  • 위 순서는 옵티마이저가 SQL 문장의 SYNTAX, SEMANTIC 에러를 점검하는 순서이기도 함
    • FROM 절에 정의되지 않은 테이블의 칼럼을 WHERE 절, GROUP BY 절, HAVING 절, SELECT 절, 그리고 ORDER  BY 절에서 사용하면 에러 발생
    • 그러나 ORDER BY 절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될 수 있음 (단, SELECT DISTINCT를 지정하거나 SQL 문장에 GROUP BY 절이 있거나, SELECT 문에 UNION 연산자가 있을 경우 열 정의가 SELECT 목록에 표시되어야 함)

 

  • SQL 문장 실행 순서는 오라클 옵티마이저가 SQL 문장을 해석하는 논리적인 순서
    • SQL 문장이 실제로 실행되는 물리적인 순서가 아님
    • SQL 문장이 실제 수행되는 물리적인 순서는 실행계획에 의해 정해짐

 

  • GROUP BY 절에서 그룹핑 기준을 정의하게 되면 DB는 일반적인 SELECT 문장처럼 FROM 절에 정의된 테이블의 구조를 그대로 갖고 가는 것이 아님
    • GROUP BY 절의 그룹핑 기준에 사용된 칼럼과 집계함수에 사용될 수 있는 숫자형 데이터 칼럼들의 집합을 새로 생성함

 

  • GRUOP BY 절을 사용하게 되면 그룹핑 기준에 사용된 카럼과 집계함수에 사용될 수 있는 숫자형 데이터 칼럼들의 집합을 새로 만드는데, 개별 데이터는 필요 없으므로 저장하지 않음
    • GROUP BY 이후 수행 절인 SELECT 절이나 ORDER BY 절에서 개별 데이터를 사용하는 경우 에러가 발생함
    • 결과적으로 SELECT 절에서는 그룹핑 기준과 숫자 형식 칼럼의 집계함수를 사용할 수 있지만, 그룹핑 기준 외의 문자 형식 칼럼은 정할 수 없음

 

 

참고

SQL 전문가 가이드 2020 개정판 - 한국데이터산업진흥원

 

반응형

'DB > SQL 전문가 가이드' 카테고리의 다른 글

[과목 II 1장 8절] 표준 조인  (0) 2025.03.26
[과목 II 1장 7절] 조인  (0) 2025.03.25
[과목 II 1장 5절] GROUP BY, HAVING 절  (0) 2025.03.23
[과목 II 1장 4절] WHERE 절  (0) 2025.03.23
[과목 II 1장 3절] 함수  (0) 2025.03.22