>  기사  >  백엔드 개발  >  Oracle 페이징 쿼리의 기본 원리에 대한 자세한 설명

Oracle 페이징 쿼리의 기본 원리에 대한 자세한 설명

小云云
小云云원래의
2017-12-06 10:07:242119검색

이 글에서는 주로 Oracle 페이징 쿼리의 원리를 자세히 소개하고, 예제 테스트 데이터를 통해 구현 방법을 자세히 분석합니다. 이 글에서는 데이터 쿼리 원리와 페이징 구현 방법을 통해 Oracle 페이징 쿼리의 기본 지식을 자세히 분석합니다. 이 글의 내용은 다음과 같습니다.

이유 1

Oracle은 기본적으로 각 테이블에 대해 rowmun, rowid 필드를 생성합니다. 이 필드를 의사 열이라고 합니다.

1 테스트 테이블 만들기


CREATE TABLE TEST(
ID NUMBER,
NAME VARCHAR2(20)
)


2 Insert 테스트 데이터


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는 일반적으로 내부적으로 물리적 데이터를 저장하는 데 사용되지 않습니다. 페이징과 관련된 행의 위치는 rownum입니다. 즉, 행 번호

two

1은 5개 미만의 행을 쿼리하고 4개의 결과를 쿼리합니다. 2보다 크고 5보다 작은 행


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


Discover 아무것도 발견되지 않았습니다. 이유는 무엇입니까?,

rownum의 특징은 다음과 같습니다.

1 ROWNUM은 작거나 작거나 같음에만 적용 가능합니다. 동일하다고 판단되면 1만 가능합니다.


2 ROWNUM은 Oracle 시스템 순차 할당입니다. 행 번호는 반환된 첫 번째 행에 1이 할당되고 두 번째 행에 2가 할당됩니다.

3 ROWNUM은 항상 1부터 시작합니다.

4 첫 번째 데이터 행 번호는 1이며 일치하지 않습니다.> 2의 조건이 충족되면 첫 번째 행이 제거되고 이전 두 번째 행이 새로운 첫 번째 행이 됩니다. . 이것이 마지막 행까지 계속되면 조건이 만족되지 않으므로 단 하나의 데이터도 찾을 수 없습니다.

3 올바른 작성 방법: >를 사용할 수 없으므로 내부 쿼리를 사용하여 행 번호를 결과 집합으로 쿼리하고 외부 레이어의 내부 결과 집합을 사용하여 비교

select rownum,id,name from test where rownum>2 and rownum <5;

4 예를 들어 페이징을 수행하면 페이지당 3줄이 있고, 두 번째 페이지를 쿼리하려는 경우 4, 5, 6개 항목을 쿼리하는 것과 동일하며, 시작 라인 4 = (페이지 번호-1) * 각 페이지 길이 + 1, 끝 줄 6=페이지 번호 * 각 페이지 길이


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


5 마찬가지로 4개의 쿼리도 가장 일반적인 3-로 변경될 수 있습니다. 계층 구조


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

위 내용은 Oracle 페이징 쿼리의 기본 원칙입니다. 모든 사람에게 도움이 되기를 바랍니다.

관련 권장 사항:

PHP


php+oracle paging class_PHP 튜토리얼

oracle 페이징 쿼리 SQL 원칙 및 명령문

에 구현된 Oracle 페이징 함수 예제

위 내용은 Oracle 페이징 쿼리의 기본 원리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.