[sql] 뷰와 ROWNUM 함수의 관계
뷰는 SQL 쿼리의 결과를 임시로 저장하는 가상 테이블입니다. 뷰는 기존의 테이블에서 필요한 컬럼만 선택하거나 조인 연산 등을 통해 더 복잡한 쿼리 결과를 생성하는 데 사용됩니다. ROWNUM 함수는 Oracle 데이터베이스에서 사용되는 함수로, 쿼리 결과의 행 번호를 반환합니다.
뷰와 ROWNUM 함수는 가끔 함께 사용되기도 합니다. 그러나 뷰를 사용할 때 ROWNUM 함수에 주의해야 합니다. ROWNUM 함수는 뷰에서 생성된 결과에 적용되기 이전에 실행되기 때문에, 예상하지 못한 결과를 얻을 수 있습니다.
예를 들어, 다음과 같은 뷰와 쿼리가 있다고 가정해보겠습니다.
CREATE VIEW employee_view AS
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 10;
SELECT *
FROM employee_view
WHERE ROWNUM <= 5;
이 경우, ROWNUM 함수는 뷰에 적용되기 전에 실행되므로, 처음 5개의 행을 반환하지 않고 5개의 행 중 첫 번째 행만 반환할 것입니다. 이는 뷰에서 필터링한 결과를 반환하는 것이 아니라, 뷰에서 선택한 첫 번째 행의 결과를 반환한다는 의미입니다.
따라서, ROWNUM 함수를 사용할 때에는 뷰의 결과에 적용되는 시점을 주의해야 합니다. 예기치 않은 결과를 피하기 위해서는 ROWNUM 함수를 적용하는 쿼리를 뷰에 직접 적용하는 것이 좋습니다.