데이터베이스에서 데이터를 조회할 때, 원하는 순서대로 데이터를 정렬하는 기능은 매우 중요합니다. Oracle DB를 비롯한 대부분의 관계형 데이터베이스는 ORDER BY 절을 사용하여 데이터를 정렬할 수 있습니다. 이번 글에서는 ORDER BY의 기본 개념, 다양한 활용 방법, 그리고 실무에서 자주 사용되는 예시 3가지를 살펴보겠습니다.
1. ORDER BY란?
ORDER BY는 SELECT 쿼리에서 데이터를 특정 기준에 따라 오름차순 또는 내림차순으로 정렬할 때 사용하는 SQL 절입니다.
기본적으로 ASC(오름차순)가 기본값이며, DESC(내림차순)를 명시적으로 지정하여 사용할 수 있습니다.
기본 문법
SELECT 컬럼명
FROM 테이블명
ORDER BY 컬럼명 [ASC|DESC];
- 컬럼명: 정렬 기준이 되는 컬럼을 지정합니다.
- ASC: 오름차순(기본값) 정렬.
- DESC: 내림차순 정렬.
2. ORDER BY의 주요 기능과 사용법
(1) 단일 컬럼 정렬
하나의 컬럼을 기준으로 데이터를 정렬할 수 있습니다.
예시
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
ORDER BY SALARY ASC;
- SALARY를 기준으로 오름차순 정렬합니다.
(2) 다중 컬럼 정렬
두 개 이상의 컬럼을 기준으로 정렬할 수도 있습니다.
앞의 컬럼으로 정렬한 후 동일한 값이 존재하면 다음 컬럼으로 정렬합니다.
예시
SELECT EMPLOYEE_ID, LAST_NAME, DEPARTMENT_ID, SALARY
FROM EMPLOYEES
ORDER BY DEPARTMENT_ID ASC, SALARY DESC;
- DEPARTMENT_ID를 기준으로 오름차순 정렬한 후, 동일 부서 내에서는 SALARY를 내림차순 정렬합니다.
(3) 컬럼 인덱스를 사용한 정렬
컬럼명을 직접 지정하지 않고, SELECT 절에서 사용된 컬럼의 순서(index)를 기반으로 정렬할 수도 있습니다.
예시
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
ORDER BY 3 DESC;
- SELECT의 세 번째 컬럼(SALARY)을 기준으로 내림차순 정렬합니다.
3. 실무에서 활용할 수 있는 예시
예시 1: 특정 날짜 기준으로 정렬하기
문제
직원들의 입사 날짜를 기준으로 가장 오래된 직원부터 정렬하고 싶습니다.
해결 방법
SELECT EMPLOYEE_ID, LAST_NAME, HIRE_DATE
FROM EMPLOYEES
ORDER BY HIRE_DATE ASC;
- HIRE_DATE를 기준으로 오름차순 정렬하여, 가장 먼저 입사한 직원부터 순서대로 나열합니다.
예시 2: 조건에 따른 정렬
문제
판매 데이터를 조회하면서, 판매 금액(TOTAL_SALES)이 높은 순서대로 정렬하되, 동일 금액일 경우 판매일(SALE_DATE)이 오래된 순서로 정렬하고 싶습니다.
해결 방법
SELECT SALE_ID, TOTAL_SALES, SALE_DATE
FROM SALES
ORDER BY TOTAL_SALES DESC, SALE_DATE ASC;
- TOTAL_SALES는 내림차순으로 정렬하며, 동일 금액일 경우 SALE_DATE는 오래된 순으로 정렬합니다.
예시 3: NULL 값 처리와 정렬
문제
고객 데이터를 조회하면서, 고객의 이메일이 없는(NULL) 경우를 마지막에 정렬하고 싶습니다.
해결 방법
SELECT CUSTOMER_ID, NAME, EMAIL
FROM CUSTOMERS
ORDER BY EMAIL ASC NULLS LAST;
- EMAIL 컬럼을 기준으로 오름차순 정렬하면서, NULL 값은 마지막에 위치시킵니다.
4. ORDER BY 사용 시 주의할 점
- 대량 데이터 정렬 시 성능
ORDER BY는 모든 데이터를 메모리로 로드하여 정렬 작업을 수행합니다. 데이터량이 많으면 성능 저하가 발생할 수 있으므로 인덱스 활용 등을 고려해야 합니다. - NULL 처리
NULL 값의 정렬 위치는 데이터베이스 설정에 따라 달라질 수 있습니다. Oracle DB에서는 기본적으로 ASC 정렬 시 NULL이 마지막에, DESC 정렬 시 NULL이 처음에 위치합니다. - 컬럼 인덱스 사용
컬럼 인덱스 방식(ORDER BY 1, 2)은 코드 가독성을 낮출 수 있으므로 주의가 필요합니다.
5. 결론
ORDER BY는 데이터 정렬을 위한 기본 도구로, 간단한 조회부터 복잡한 비즈니스 로직까지 다양하게 활용됩니다.
올바른 정렬 기준을 설정하고, 데이터베이스의 특성을 고려한 최적화를 병행하면 효율적인 데이터 조회가 가능합니다.
실무 팁
- 정렬 컬럼에 인덱스를 추가해 성능을 개선하세요.
- NULLS FIRST 또는 NULLS LAST 옵션으로 보다 명확한 정렬 기준을 설정하세요.
- 복잡한 다중 정렬 시, 쿼리의 의도를 명확히 주석으로 남기면 협업에 유리합니다.
이제 여러분도 Oracle DB에서 ORDER BY를 능숙하게 활용해 데이터를 원하는 순서로 정리해 보세요! 😊
'Database' 카테고리의 다른 글
오라클 데이터 타입: VARCHAR2, NUMBER, DATE 이해하기 (0) | 2024.12.03 |
---|---|
오라클 DISTINCT를 사용한 중복 데이터 제거 (0) | 2024.12.03 |
오라클 WHERE 절로 데이터 필터링하기 (1) | 2024.12.03 |
오라클 SELECT 문으로 데이터 검색하기 (0) | 2024.12.03 |
오라클 SQLPlus의 설치 및 기본 사용법 (0) | 2024.12.03 |