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

MySQL 데이터베이스에서 처음 10개 레코드를 조회하는 방법 – LIMIT 절 완벽 가이드

MySQL에서 처음 10개 레코드를 선택하는 방법

MySQL 데이터베이스에서 테이블의 처음 10개 요소(레코드)를 가져오려면 SQL의 ORDER BY 절LIMIT 10을 함께 사용하면 됩니다. ORDER BY로 정렬 기준을 지정하고, LIMIT으로 반환할 행의 개수를 제한하는 방식입니다.

기본 문법

SELECT * FROM yourTableName ORDER BY yourIdColumnName LIMIT 10;

여기서 yourIdColumnName은 정렬 기준이 되는 열(예: 자동 증가되는 기본키)을 의미합니다. 이제 실제 예제를 통해 동작 방식을 자세히 살펴보겠습니다.

1단계: 테이블 생성하기

먼저 예제에 사용할 Clients 테이블을 생성합니다.

mysql> create table Clients
    -> (
    -> Client_Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName varchar(20)
    -> );
Query OK, 0 rows affected (0.51 sec)

Client_Id 열은 AUTO_INCREMENT로 설정되어 있어 새 레코드가 추가될 때마다 자동으로 1씩 증가하며, 기본키 역할을 합니다.

2단계: 샘플 데이터 삽입하기

INSERT 명령을 사용해 클라이언트 이름 12건을 테이블에 입력합니다.

mysql> insert into Clients(ClientName) values('Larry');
Query OK, 1 row affected (0.09 sec)
mysql> insert into Clients(ClientName) values('Sam');
Query OK, 1 row affected (0.19 sec)
mysql> insert into Clients(ClientName) values('Bob');
Query OK, 1 row affected (0.18 sec)
mysql> insert into Clients(ClientName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into Clients(ClientName) values('John');
Query OK, 1 row affected (0.17 sec)
mysql> insert into Clients(ClientName) values('James');
Query OK, 1 row affected (0.14 sec)
mysql> insert into Clients(ClientName) values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into Clients(ClientName) values('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> insert into Clients(ClientName) values('Mike');
Query OK, 1 row affected (0.12 sec)
mysql> insert into Clients(ClientName) values('Maxwell');
Query OK, 1 row affected (0.27 sec)
mysql> insert into Clients(ClientName) values('Chris');
Query OK, 1 row affected (0.23 sec)
mysql> insert into Clients(ClientName) values('Ramit');
Query OK, 1 row affected (0.18 sec)

3단계: 전체 레코드 확인하기

SELECT문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from Clients;

실행 결과는 다음과 같습니다. 총 12개의 레코드가 저장되어 있습니다.

+-----------+------------+
| Client_Id | ClientName |
+-----------+------------+
|         1 | Larry      |
|         2 | Sam        |
|         3 | Bob        |
|         4 | David      |
|         5 | John       |
|         6 | James      |
|         7 | Robert     |
|         8 | Carol      |
|         9 | Mike       |
|        10 | Maxwell    |
|        11 | Chris      |
|        12 | Ramit      |
+-----------+------------+
12 rows in set (0.00 sec)

4단계: 처음 10개 레코드만 조회하기

방법 1: ORDER BY + LIMIT 조합

아래 쿼리는 Client_Id를 기준으로 정렬한 후 상위 10개 레코드만 반환합니다.

mysql> select *from Clients ORDER BY Client_Id LIMIT 10;

실행 결과:

+-----------+------------+
| Client_Id | ClientName |
+-----------+------------+
|         1 | Larry      |
|         2 | Sam        |
|         3 | Bob        |
|         4 | David      |
|         5 | John       |
|         6 | James      |
|         7 | Robert     |
|         8 | Carol      |
|         9 | Mike       |
|        10 | Maxwell    |
+-----------+------------+
10 rows in set (0.00 sec)

방법 2: LIMIT 오프셋(offset) 활용하기

같은 결과를 얻는 또 다른 방법은 LIMIT에 시작 위치(오프셋)를 함께 지정하는 것입니다. LIMIT 0, 10은 0번째 행부터 시작해 10개의 행을 가져오라는 의미입니다.

mysql> select *from Clients limit 0,10;

실행 결과:

+-----------+------------+
| Client_Id | ClientName |
+-----------+------------+
|         1 | Larry      |
|         2 | Sam        |
|         3 | Bob        |
|         4 | David      |
|         5 | John       |
|         6 | James      |
|         7 | Robert     |
|         8 | Carol      |
|         9 | Mike       |
|        10 | Maxwell    |
+-----------+------------+
10 rows in set (0.00 sec)

정리 및 참고 사항

두 방법 모두 동일한 결과를 반환하지만, 용도에 따라 활용 방식이 조금씩 다릅니다.

  • LIMIT n: 간단하게 상위 n개 행만 가져올 때 사용합니다.
  • LIMIT offset, count: 특정 위치부터 원하는 개수만큼 가져올 때 유용하며, 페이지네이션(페이징 처리) 구현 시 자주 활용됩니다. 예를 들어 두 번째 페이지(11~20번째 행)를 보려면 LIMIT 10, 10을 사용하면 됩니다.

또한 MySQL 5.0 이상에서는 LIMIT 10 OFFSET 0 형태의 문법도 지원하므로, 팀의 코딩 스타일에 맞춰 일관성 있게 사용하는 것이 좋습니다. 대용량 테이블에서 ORDER BY를 사용할 경우에는 해당 열에 인덱스가 설정되어 있어야 성능 저하 없이 빠른 조회가 가능합니다.