PostgreSQL의 행 제한

Bilal Shahid 2024년2월15일
  1. LIMIT 절을 사용하여 PostgreSQL에서 행 제한
  2. FETCH FIRST 절을 사용하여 PostgreSQL에서 행 제한
PostgreSQL의 행 제한

PostgreSQL에서는 SELECT 문을 활용하여 테이블의 행을 나열할 수 있습니다. 그러나 선택적 행만 나열하려면 그에 따라 다양한 절을 사용해야 합니다.

테이블에서 선택적인 행을 표시하기 위해 SELECT 문과 함께 사용되는 한 절은 LIMIT 절입니다. LIMIT절은 결과 데이터에 나열되는 행 수를 제한할 수 있습니다.

이 기사에서는 LIMIT 키워드와 PostgreSQL에서의 용도에 대해 설명합니다.

LIMIT 절을 사용하여 PostgreSQL에서 행 제한

LIMIT 절의 구문은 다음과 같습니다.

LIMIT { count }

여기에서 count 필드는 계산되고 표시될 행 수를 나타냅니다. ALL 키워드를 count 대신 사용하여 쿼리에서 반환된 모든 행을 표시할 수 있으며 제한 없음과 동일한 효과가 있습니다.

다음 테이블이 있는 샘플 데이터베이스를 통해 LIMIT 절이 어떻게 사용되는지 알아보겠습니다.

create table dummy
(
num int not null,
constraint PK primary key (num)
);

이제 이 샘플 테이블을 몇 가지 값으로 채웁니다.

insert into dummy values (150), (120), (330), (240), (150), (60), (270), (110), (400), (350);

간단한 SELECT * from dummy 문을 사용하여 이 테이블의 행을 나열하면 다음과 같은 결과를 얻게 됩니다.

PostgreSQL LIMIT - 출력 1

처음 5개 행만 표시하려면 어떻게 해야 합니까? 이를 위해 LIMIT 절을 쉽게 사용할 수 있습니다.

다음과 같은 방법으로 사용할 수 있는 SELECT 문의 선택적 기능입니다.

SELECT * from dummy
LIMIT 5;

그러면 테이블의 처음 5개 행만 나열됩니다.

PostgreSQL LIMIT - 출력 2

참고: LIMIT 절에 지정된 행의 값이 테이블에 있는 행보다 크면 모든 테이블 행이 표시됩니다.

그러나 LIMIT 절은 행이 정렬되지 않은 경우 사용하기에 적합하지 않습니다. 즉, 행의 순서를 예측할 수 없으며 LIMIT 쿼리가 다양한 결과를 표시할 수 있습니다. SELECT 쿼리에서 ORDER BY 절과 함께 LIMIT 절을 사용하여 이에 대응할 수 있습니다.

ORDER BY 명령을 사용하면 테이블의 하나 이상의 속성을 기준으로 데이터를 정렬할 수 있습니다. 해당 속성 세트를 사용하여 오름차순 또는 내림차순으로 정렬할 수도 있습니다.

dummy 테이블에서 ORDER BY와 함께 LIMIT 절을 사용하는 효과를 살펴보겠습니다. 코드는 다음과 같습니다.

SELECT * from dummy
ORDER BY num
LIMIT 5;

그러면 다음과 같은 결과가 나타납니다.

PostgreSQL LIMIT - 출력 3

ORDER BY 절이 기본적으로 데이터를 오름차순으로 정렬했기 때문에 쿼리가 num의 가장 작은 값 5개를 반환한 것을 볼 수 있습니다. 따라서 LIMITORDER BY 절을 사용하여 최고 또는 최저 지정된 값 수를 가져올 수 있습니다.

첫 번째 행부터 시작하는 행을 표시하지 않으려면 어떻게 해야 합니까? LIMIT 절은 이를 수행할 수 있는 유연성도 부여합니다.

그러면 구문은 다음과 같이 됩니다.

LIMIT { count }
OFFSET { start }

start 대신 값은 지정된 행 수가 표시되기 전에 건너뛸 행 수를 지정합니다. 즉, 시작 행 수를 건너뛰고 다음 개수 행 수가 출력으로 표시됩니다.

참고: OFFSET 절에 지정된 start 값이 테이블에 있는 행보다 크면 테이블 행이 표시되지 않습니다.

dummy 테이블에서 다음 쿼리를 실행하여 OFFSET 사용을 시연해 보겠습니다.

SELECT * from dummy
ORDER BY num
LIMIT 5
OFFSET 2;

이 코드는 세 번째 행에서 시작하여 지정된 대로 처음 두 개를 건너뛰고 다음과 같이 다음 다섯 개를 표시합니다.

PostgreSQL LIMIT - 출력 4

참고: count 대신 값을 NULL로 설정하면 제한 없음과 동일한 효과를 가지며 결과 행을 모두 표시합니다. start 대신 값을 NULL로 설정하면 OFFSET 0과 동일한 효과를 가지며 첫 번째 행부터 표시를 시작합니다.

PostgreSQL은 테이블에서 필요한 수의 행만 출력하는 데 사용할 수 있는 LIMIT 절과 동등한 기능을 제공합니다. 이것은 아래에 설명되어 있습니다.

FETCH FIRST 절을 사용하여 PostgreSQL에서 행 제한

LIMIT 절의 대안은 FETCH FIRST 절이며 구문은 다음과 같습니다.

FETCH FIRST { count } ROWS ONLY;

여기서도 count는 표시하려는 행 수로 대체됩니다. 동일한 dummy 테이블을 사용하여 FETCH FIRST 절이 코드에서 어떻게 사용되는지 살펴보겠습니다.

SELECT * from dummy
ORDER BY num
FETCH FIRST 5 ROWS ONLY;

이것은 LIMIT 5를 쓰는 것과 같은 효과를 가지며 다음과 같은 결과 행을 표시합니다.

PostgreSQL FETCH FIRST - 출력 1

그러나 첫 번째 행부터 시작하는 행을 표시하지 않으려면 FETCH FIRST와 함께 OFFSET 절을 사용할 수 있습니다. 이는 다음과 같은 방식으로 작성됩니다.

OFFSET { start }
FETCH FIRST { count } ROWS ONLY;

다음 쿼리 형식으로 dummy 테이블에서 이를 사용하겠습니다.

SELECT * from dummy
ORDER BY num
OFFSET 2
FETCH FIRST 5 ROWS ONLY;

이렇게 하면 처음 두 개를 건너뛴 후 다음 행을 가져와서 인쇄합니다.

PostgreSQL FETCH FIRST - 출력 2

이는 PostgreSQL에서 LIMIT 절을 사용하여 SELECT 쿼리의 결과로 표시되는 행 수를 제한하는 다양한 방법을 요약한 것입니다. LIMITFETCH FIRST 명령을 서로의 대안으로 사용하는 방법을 배웠기를 바랍니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - PostgreSQL Table