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 |