요약
SQL ROWNUM과 ROW_NUMBER는 모두 순번을 부여하는 기능을 제공하지만 동작 방식과 사용 목적이 다릅니다. SQLD 시험에서는 두 개념의 차이를 묻는 문제가 자주 출제되며 실무에서도 데이터 순위 분석과 페이징 처리에 많이 사용됩니다. 이번 글에서는 SQL ROWNUM과 ROW_NUMBER의 차이점, 사용법, SQLD 출제 포인트까지 자세히 알아보겠습니다.
SQL ROWNUM이란?
SQL ROWNUM은 Oracle에서 제공하는 의사 컬럼(Pseudo Column)입니다.
조회된 결과에 순번을 부여하는 역할을 합니다.
예를 들어 EMP 테이블을 조회하면 Oracle은 자동으로 각 행에 ROWNUM 값을 부여합니다.
SELECT ROWNUM,
ENAME
FROM EMP;
실행 결과 예시
| ROWNUM | ENAME |
|---|---|
| 1 | SMITH |
| 2 | ALLEN |
| 3 | WARD |
SQL ROWNUM은 SQLD 시험에서 매우 자주 등장하는 핵심 개념입니다. 더 많은 정보를 확인하고 SQL ROWNUM 기본 개념을 이해해보세요.
SQL ROWNUM 특징
SQL ROWNUM은 조회되는 순서대로 번호를 부여합니다.
중요한 점은 ORDER BY보다 먼저 적용된다는 것입니다.
많은 SQLD 수험생이 이 부분에서 실수합니다.
예시
SELECT ROWNUM,
ENAME,
SAL
FROM EMP
ORDER BY SAL DESC;
많은 사람이 급여 순으로 ROWNUM이 부여된다고 생각하지만 실제로는 그렇지 않습니다.
ROWNUM이 먼저 부여된 후 ORDER BY가 실행됩니다.
SQLD 시험에서 단골 출제 유형이므로 반드시 기억해야 합니다. 더 많은 정보를 확인하고 SQL 실행 순서를 학습해보세요.
SQL ROWNUM을 이용한 상위 N건 조회
SQL ROWNUM은 상위 데이터 조회에 자주 사용됩니다.
SELECT *
FROM EMP
WHERE ROWNUM <= 5;
위 SQL은 처음 조회되는 5건만 반환합니다.
실무에서도 간단한 샘플 데이터 조회에 자주 사용됩니다.
하지만 정렬 후 상위 데이터를 조회하려면 주의가 필요합니다. 더 많은 정보를 확인하고 SQL 활용 능력을 향상시켜보세요.
SQL ROWNUM 사용 시 주의사항
다음 SQL을 살펴보겠습니다.
SELECT *
FROM EMP
WHERE ROWNUM <= 3
ORDER BY SAL DESC;
많은 사람들이 급여 상위 3명을 조회한다고 생각합니다.
하지만 실제로는
- 먼저 3건 추출
- 그 결과를 정렬
하는 방식으로 동작합니다.
따라서 원하는 결과가 나오지 않을 수 있습니다.
SQLD 시험에서 매우 자주 등장하는 함정 문제입니다. 더 많은 정보를 확인하고 SQL ROWNUM 동작 원리를 이해해보세요.
SQL 인라인 뷰와 ROWNUM
급여 상위 3명을 정확히 조회하려면 인라인 뷰를 사용해야 합니다.
SELECT *
FROM (
SELECT *
FROM EMP
ORDER BY SAL DESC
)
WHERE ROWNUM <= 3;
실행 순서
- 급여 내림차순 정렬
- 인라인 뷰 생성
- ROWNUM 적용
이 방식이 SQLD 시험에서 가장 많이 출제되는 형태입니다.
더 많은 정보를 확인하고 SQL 인라인 뷰 활용법을 익혀보세요.
SQL ROW_NUMBER란?
SQL ROW_NUMBER는 분석 함수(Analytic Function)의 일종입니다.
조회 결과에 순번을 부여하는 역할을 합니다.
기본 문법은 다음과 같습니다.
SELECT ENAME,
SAL,
ROW_NUMBER() OVER(ORDER BY SAL DESC) AS RN
FROM EMP;
실행 결과 예시
| 이름 | 급여 | 순위 |
|---|---|---|
| KING | 5000 | 1 |
| SCOTT | 3000 | 2 |
| FORD | 3000 | 3 |
SQL ROW_NUMBER는 ORDER BY 기준으로 순번을 생성합니다.
더 많은 정보를 확인하고 SQL 분석 함수 개념을 익혀보세요.
SQL ROWNUM과 ROW_NUMBER 차이
SQLD 시험에서 가장 중요한 부분입니다.
| 구분 | SQL ROWNUM | SQL ROW_NUMBER |
|---|---|---|
| 종류 | 의사 컬럼 | 분석 함수 |
| 적용 시점 | 조회 시 자동 생성 | OVER 절 사용 |
| 정렬 기준 | 정렬 전 | 정렬 후 |
| SQLD 출제 빈도 | 매우 높음 | 매우 높음 |
| 실무 활용 | 단순 순번 | 순위 분석 |
ROWNUM은 조회 순서 기준이고 ROW_NUMBER는 정렬 결과 기준입니다.
이 차이를 이해하는 것이 SQLD 합격의 핵심입니다. 더 많은 정보를 확인하고 SQL 핵심 개념을 정리해보세요.
ROW_NUMBER와 ORDER BY
ROW_NUMBER는 ORDER BY와 함께 사용됩니다.
SELECT ENAME,
SAL,
ROW_NUMBER() OVER(ORDER BY SAL DESC) AS RN
FROM EMP;
급여가 높은 순서대로 순번이 부여됩니다.
ROW_NUMBER는 페이징 처리와 순위 분석에 자주 사용됩니다.
더 많은 정보를 확인하고 SQL 실무 활용 방법을 익혀보세요.
ROW_NUMBER와 PARTITION BY
ROW_NUMBER는 그룹별 순번도 생성할 수 있습니다.
SELECT ENAME,
DEPTNO,
SAL,
ROW_NUMBER()
OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) AS RN
FROM EMP;
결과
| 부서번호 | 이름 | 순번 |
|---|---|---|
| 10 | KING | 1 |
| 10 | CLARK | 2 |
| 20 | SCOTT | 1 |
| 20 | FORD | 2 |
부서별 급여 순위를 구할 수 있습니다.
실무 데이터 분석에서도 매우 자주 사용됩니다. 더 많은 정보를 확인하고 SQL 분석 함수 활용법을 익혀보세요.
SQLD 시험에서 자주 출제되는 유형
SQLD 시험에서는 다음 유형이 자주 등장합니다.
ROWNUM 실행 결과 예측
SELECT *
FROM EMP
WHERE ROWNUM <= 5;
인라인 뷰와 ROWNUM
SELECT *
FROM (
SELECT *
FROM EMP
ORDER BY SAL DESC
)
WHERE ROWNUM <= 3;
ROW_NUMBER 결과 분석
ROW_NUMBER() OVER(ORDER BY SAL DESC)
실제 SQLD 시험에서는 실행 순서를 정확히 이해해야 정답을 맞힐 수 있습니다.
더 많은 정보를 확인하고 SQLD 기출문제를 분석해보세요.
SQLD 시험에서 ROWNUM과 ROW_NUMBER가 중요한 이유
SQLD 시험에서는 SQL ROWNUM과 SQL ROW_NUMBER 관련 문제가 꾸준히 출제됩니다.
특히 다음 개념은 반드시 이해해야 합니다.
| 출제 포인트 | 중요도 |
|---|---|
| ROWNUM 개념 | 매우 높음 |
| ROW_NUMBER 개념 | 매우 높음 |
| 실행 순서 | 매우 높음 |
| 인라인 뷰 조합 | 매우 높음 |
| PARTITION BY | 높음 |
| 결과 예측 | 매우 높음 |
SQLD 시험에서는 단순 암기보다 실행 결과를 이해하는 것이 중요합니다.
더 많은 정보를 확인하고 SQLD 핵심 개념을 정리해보세요.
자주 묻는 질문(FAQ)
SQL ROWNUM과 ROW_NUMBER는 같은 기능인가요?
아닙니다. 둘 다 순번을 부여하지만 동작 방식과 사용 목적이 다릅니다. 더 많은 정보를 확인하고 SQL 차이점을 이해해보세요.
SQLD 시험에 ROWNUM 문제가 많이 나오나요?
네. SQLD 시험의 대표적인 출제 영역 중 하나입니다. 더 많은 정보를 확인하고 SQLD 기출문제를 분석해보세요.
실무에서는 ROWNUM과 ROW_NUMBER 중 무엇을 많이 사용하나요?
최근에는 분석 기능이 강력한 ROW_NUMBER를 더 많이 사용하는 편입니다. 더 많은 정보를 확인하고 SQL 실무 활용법을 익혀보세요.
마무리
SQL ROWNUM과 SQL ROW_NUMBER는 모두 순번을 부여하는 기능을 제공하지만 동작 방식이 다릅니다. SQL ROWNUM은 조회 순서 기준으로 번호를 부여하고 SQL ROW_NUMBER는 정렬 결과를 기준으로 순번을 생성합니다. SQLD 시험에서는 두 개념의 차이를 이해하는 것이 매우 중요하며 실무에서도 자주 활용되는 기능입니다. 더 많은 정보를 확인하고 다음 단계인 RANK와 DENSE_RANK 차이도 함께 학습해보세요.
