SQL ROWNUM과 ROW_NUMBER 차이 완벽 정리|SQLD 시험 필수 개념 총정리

요약

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;

실행 결과 예시

ROWNUMENAME
1SMITH
2ALLEN
3WARD

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명을 조회한다고 생각합니다.

하지만 실제로는

  1. 먼저 3건 추출
  2. 그 결과를 정렬

하는 방식으로 동작합니다.

따라서 원하는 결과가 나오지 않을 수 있습니다.

SQLD 시험에서 매우 자주 등장하는 함정 문제입니다. 더 많은 정보를 확인하고 SQL ROWNUM 동작 원리를 이해해보세요.

SQL 인라인 뷰와 ROWNUM

급여 상위 3명을 정확히 조회하려면 인라인 뷰를 사용해야 합니다.

SELECT *
FROM (
    SELECT *
    FROM EMP
    ORDER BY SAL DESC
)
WHERE ROWNUM <= 3;

실행 순서

  1. 급여 내림차순 정렬
  2. 인라인 뷰 생성
  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;

실행 결과 예시

이름급여순위
KING50001
SCOTT30002
FORD30003

SQL ROW_NUMBER는 ORDER BY 기준으로 순번을 생성합니다.

더 많은 정보를 확인하고 SQL 분석 함수 개념을 익혀보세요.

SQL ROWNUM과 ROW_NUMBER 차이

SQLD 시험에서 가장 중요한 부분입니다.

구분SQL ROWNUMSQL 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;

결과

부서번호이름순번
10KING1
10CLARK2
20SCOTT1
20FORD2

부서별 급여 순위를 구할 수 있습니다.

실무 데이터 분석에서도 매우 자주 사용됩니다. 더 많은 정보를 확인하고 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 차이도 함께 학습해보세요.

관련 글 보기