Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL LIMIT과 OFFSET 완벽 이해: 어떤 행이 반환되는지 예제로 쉽게 배우기

MySQL에서 LIMIT과 OFFSET의 동작 원리

MySQL에서 LIMIT은 조회할 행(row)의 개수를 지정하고, OFFSET은 건너뛸 행의 개수를 지정합니다. 두 절을 함께 사용하면 결과 집합에서 특정 범위의 행만 손쉽게 가져올 수 있습니다.

예를 들어 LIMIT 4OFFSET 6을 함께 사용하면 어떤 행이 반환될까요? 정답은 7번째부터 10번째 행, 즉 7, 8, 9, 10번 행입니다. OFFSET 값만큼 앞의 행을 건너뛴 후, LIMIT 값만큼의 행을 반환합니다.

이제 실제 예제를 통해 이 개념을 확실히 이해해 보겠습니다.

1. 테이블 생성하기

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table LimitOffsettable
-> (
-> Id int
-> );
Query OK, 0 rows affected (0.60 sec)

2. 데이터 삽입하기

다음으로 테이블에 1부터 13까지의 숫자를 순서대로 삽입합니다. INSERT 문은 아래와 같습니다.

mysql> insert into LimitOffsettable values(1);
Query OK, 1 row affected (0.15 sec)
mysql> insert into LimitOffsettable values(2);
Query OK, 1 row affected (0.21 sec)
mysql> insert into LimitOffsettable values(3);
Query OK, 1 row affected (0.12 sec)
mysql> insert into LimitOffsettable values(4);
Query OK, 1 row affected (0.12 sec)
mysql> insert into LimitOffsettable values(5);
Query OK, 1 row affected (0.12 sec)
mysql> insert into LimitOffsettable values(6);
Query OK, 1 row affected (0.11 sec)
mysql> insert into LimitOffsettable values(7);
Query OK, 1 row affected (0.13 sec)
mysql> insert into LimitOffsettable values(8);
Query OK, 1 row affected (0.11 sec)
mysql> insert into LimitOffsettable values(9);
Query OK, 1 row affected (0.09 sec)
mysql> insert into LimitOffsettable values(10);
Query OK, 1 row affected (0.11 sec)
mysql> insert into LimitOffsettable values(11);
Query OK, 1 row affected (0.12 sec)
mysql> insert into LimitOffsettable values(12);
Query OK, 1 row affected (0.11 sec)
mysql> insert into LimitOffsettable values(13);
Query OK, 1 row affected (0.13 sec)

3. 전체 데이터 확인하기

SELECT 문을 사용하여 삽입된 모든 레코드를 조회합니다.

mysql> select *from LimitOffsettable;

실행 결과는 다음과 같습니다.

+------+
| Id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
+------+
13 rows in set (0.00 sec)

총 13개의 행이 저장되어 있는 것을 확인할 수 있습니다.

4. LIMIT 4 OFFSET 6 적용하기

이제 LIMIT 4 OFFSET 6을 적용해 보겠습니다. 이 쿼리는 앞의 6개 행(1~6)을 건너뛰고, 그 다음부터 4개의 행, 즉 7, 8, 9, 10번 행을 반환합니다.

mysql> select *from LimitOffsettable LIMIT 4 OFFSET 6;

실행 결과는 다음과 같습니다.

+------+
| Id |
+------+
| 7 |
| 8 |
| 9 |
| 10 |
+------+
4 rows in set (0.00 sec)

정리

MySQL에서 LIMIT N OFFSET M을 사용하면, 먼저 M개의 행을 건너뛴 후(N+M번째 행부터 시작) N개의 행을 반환합니다. 즉, OFFSET은 0부터 시작하는 인덱스처럼 동작하므로 OFFSET 6은 7번째 행부터 결과를 가져옵니다. 이 기능은 게시판 페이징 처리 등 대량의 데이터 중 일부 구간만 조회해야 할 때 매우 유용하게 활용됩니다.