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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.