Oacle 페이지 조회 의 기본 원 리 를 상세 하 게 설명 하 다.

본 고 는 데이터 조회 원리 와 페이지 를 나 누 어 실현 하 는 방법 에서 Oacle 페이지 조회 의 기초 지식 을 상세 하 게 분석 했다.다음은 본 고의 내용 이다.
원인
Oacle 은 기본적으로 표 마다 rowmun,rowid 필드 를 생 성 합 니 다.이 필드 들 을 위 열 이 라 고 합 니 다.
1 테스트 테이블 만 들 기

CREATE TABLE TEST(
ID NUMBER,
NAME VARCHAR2(20)
)
2 테스트 데이터 삽입

INSERT INTO TEST VALUES (1,'  ');
INSERT INTO TEST VALUES (2,'  ');
INSERT INTO TEST VALUES (3,'  ');
INSERT INTO TEST VALUES (4,'  ');
INSERT INTO TEST VALUES (5,'  ');
INSERT INTO TEST VALUES (6,'  ');
INSERT INTO TEST VALUES (7,'  ');
3.표 필드 를 보고 자체 필드 를 확인 합 니 다.

select rowid,rownum,id,name from TEST; 

4 rowid 는 일반적으로 사용 할 수 없습니다.Oracle 내부 에서 줄 의 물리 적 위 치 를 저장 하 는 데 사 용 됩 니 다.페이지 와 관련 된 것 은 rownum,즉 줄 번호 입 니 다.
둘째.
1  5 보다 작은 줄 을 조회 하여 네 가지 결 과 를 조회 하 다.

select rowid,rownum,id,name from test where rownum <5;

2.조회 가 2 보다 5 이하 인 줄

select rownum,id,name from test where rownum>2 and rownum <5;
아무것도 알 아내 지 못 했 습 니 다.무슨 이유 일 까요?
rownum 은 다음 과 같은 특징 이 있 습 니 다.
1 ROWNUM 은 작 거나 작 거나 같은 것 에 만 적 용 됩 니 다.만약 에 판단 을 하 는 것 과 같 으 면 1 과 같 을 수 있 습 니 다.
2 ROWNUM 은 Oacle 시스템 에서 순서대로 분 배 된 줄 의 번호 로 돌아 오 는 첫 번 째 줄 은 1,두 번 째 줄 은 2 로 유추 된다.
3 ROWNUM 은 항상 1 부터.
4 첫 번 째 데이터 줄 번호 가 1 이 고>2 의 조건 에 부합 되 지 않 으 면 첫 번 째 줄 이 제거 되 고 앞의 두 번 째 줄 이 새로운 첫 번 째 줄 로 바 뀌 었 습 니 다.그러면 마지막 줄 까지 조건 이 만족 하지 않 아서 한 줄 의 데이터 도 찾 을 수 없습니다.

3.정확 한 쓰기:>사용 할 수 없 기 때문에 줄 번 호 를 내부 조회 로 조회 하여 결과 집합 으로 하고 외부 에서 내부 결과 집합 으로 비교 하면 됩 니 다.

select rownum,id,name from
( select rownum rn, u.* from test u where rownum<5) un
where un.rn>2

4 페이지 를 나 누 면,예 를 들 어 페이지 당 세 줄,두 번 째 페이지 를 조회 하려 면 4,5,6 조 를 찾 는 것 과 같 습 니 다.시작 줄 4= (페이지-1)*페이지 당 길이+1,끝 줄 6=페이지*페이지 당 길이

select rownum,id,name from (
  select rownum rn , t.* from test t where rownum <=6) n
where n.rn>=4

5 같은 것 은 4 중 조 회 를 가장 흔히 볼 수 있 는 3 층 구조 로 바 꿀 수 있다.

 select rownum,id,name from (
  select rownum rn, n.* from 
    (
     select * from test --            
    ) n where rownum <=6 --         
  ) 
 where rn>=4    

좋은 웹페이지 즐겨찾기