1. ROWID
(오라클에서 내부적으로 사용되는 컬럼을 pseudocolumn 이라고 하며 ROWID, ROWNUM 등이 있다)
- DB에서 컬럼이 위치한 장소 (물리적인 주소)
- 테이블에서 row 에 대한 고유한 값으로서(unique identifier) 사용자가 임의로 변경할 수 없다.
- ROWID를 사용하여 테이블의 row를 검색할 때 single row를 찾아가는데 가장 빠른 검색방법이 될 것이다
- rowid 는 16진수로 되어 있고 번호는 아래와 같은 의미를 가지고 있다.
예 ) emp 테이블의 첫번 째 rowid - "AAAM8NAAEAAAAmUAAA"
AAAM8N : object의 고유번호
AAE : tablespace 번호 또는 상대적 file 번호
AAAAmU : block 번호
AAA : block 내의 slot 번호 또는 row 번호
예) select rowid, emp.empno, emp.ename, emp.job ( select rowid, emp.* from emp; - emp의 모든 컬럼과 rowid 보기)
from emp
where rownum <= 3; -----------------------------> emp table의 ROWID 1~3인 데이터 확인하기
예) 커서의 ROWID를 통한 데이터 검색
create or replace procedure test_emp_sal_update_proc2(p_deptno number, p_percent number)
is
cursor emp_cur (dno number) is
select rowid as id, e.*
from test_emp e
where deptno = dno
for update; -------------> select 문이 실행될 때 test_emp 테이블에 LOCK이 걸린다
begin
for r in emp_cur(p_deptno) loop
update test_emp
set sal = r.sal*p_percent
where rowid = r.id; -----> r 구조체의 ROWID 필드값과 test_emp 테이블의 ROWID값이 같은 데이터 찾기
end loop;
end;
/
1-1. ROWNUM
- 테이블에서 select 되어진 일련 번호임 ( 1부터 시작함 )
- select rownum, empno, ename, sal ( = select rownum, emp.empno, emp.ename, emp.sal from emp;)
from emp;
2. 숫자 데이터 타입
2-1 PLS_INTEGER : -2147483648 ~ 21473647 사이의 정수
- PL/SQL 내에서만 이용하도록 만들어진 data type , pls_integer 값을 DB 열에 저장할 수는 없다.
- NUMBER 변수보다 작은 범위를 갖는다. 따라서 메모리를 적게 차지한다.
- CPU 산술 연산을 수행하므로
DB Library API를 통해 연산을 수행하는 NUMBER나 BINARY_INTEGER 보다 빠른 속도를 제공한다
( 9i 버전 까지 많이 사용했다 )
2-2 BINARY_INTEGER : -2147483647 ~ 2147483647 사이의 정수
- PLS_INTEGER 와 비슷하며 NUMBER 변수보다는 메모리를 적게 차지하지만
PLS_INTEGER 보다는 약간 느린 편이다
- 더 큰 data를 넣으면 NUMBER 로 자동할당 된다. 그래서 BINARY_INTEGER를 더 많이 씀
'SQL > ORACLE' 카테고리의 다른 글
오라클 INDEX(인덱스) 작성시 주의사항 (0) | 2014.06.11 |
---|---|
[오라클함수] 오라클 함수 정리 (0) | 2014.06.11 |
오라클 - 데이터 가져오기편 3 (0) | 2014.06.11 |
오라클 - 데이터 가져오기편 2 (0) | 2014.06.11 |
서브쿼리, rownum, 조인 (0) | 2014.06.11 |
INDEX_DESC 힌트 절 (0) | 2014.06.11 |
컬럼 데이터 유형 (0) | 2014.04.23 |
alter system [switch logfile] 과 [archive log current] 의 차이요 (0) | 2014.04.23 |