테이블의 컬럼처럼 동작하지만, 실제로 테이블에 저장되지는 않는 컬럼
SELECT문에서 사용 가능
사용자가 INSERT, UPDATE, DELETE는 불가능
| 오라클 객체 | 설명 |
| ROWNUM | 행 번호 |
| ROWID | 데이터가 저장된 주소 |
Q. ROWNUM은 INSERT 순서대로 쌓일까?
CREATE TABLE TEST_EMP2 AS
SELECT * FROM EMPLOYEES;
SELECT ROWNUM, EMPLOYEE_ID
FROM TEST_EMP2
WHERE ROWNUM <= 5;

DELETE FROM TEST_EMP2 WHERE EMPLOYEE_ID = 202;
-- 1 행 이(가) 삭제되었습니다.
SELECT ROWNUM, EMPLOYEE_ID
FROM TEST_EMP2
WHERE ROWNUM <= 5;

데이터가 수정/삭제/추가 될 때 ROWNUM은 계속해서 다시 계산된다.
그러므로 컬럼으로 테이블에 저장되어있을 수 없다.
그렇담 애초에 처음 저장할 때 ROWNUM을 붙여서 저장하면 어떨까?
CREATE TABLE EX3_X AS
SELECT ROWNUM AS LINENUM, EMPLOYEE_ID
FROM EMPLOYEES;
SELECT ROWNUM, LINENUM, EMPLOYEE_ID FROM EX3_X;

DELETE FROM EX3_X WHERE LINENUM = 5; -- 삭제
SELECT ROWNUM, LINENUM, EMPLOYEE_ID FROM EX3_X WHERE ROWNUM <= 5;

반응형
'SQL' 카테고리의 다른 글
| [ORACLE] 오라클에서의 NULL (1) | 2025.07.16 |
|---|---|
| [SQL] CASE WHEN 표현 (0) | 2025.07.16 |
| [SQL] TCL - COMMIT, ROLLBACK, SAVEPOINT (0) | 2025.07.16 |
| [SQL] 대소문자 관계 없이 LIKE SEARCH (0) | 2025.07.15 |
| [ORACLE] SEQUENCE 시퀀스 (1) | 2025.07.15 |