본문 바로가기
MySQL/MySQL 기본 CRUD

[기본 CRUD] 6. LIMIT 키워드로 데이터 일부 갯수만 조회하기

by Fletcher 2024. 8. 7.

 

반갑습니다

저번 포스트에서는 ORDER BY 키워드를 이용해서

데이터를 조회할 때 오름차순 또는 내림차순으로 정렬했었습니다 ^^

이번에는 LIMIT키워드에 대해 알아보겠습니다

 

 

 

 

이번에도 books 테이블을 사용하여 예시 구문을 작성해보겠습니다

지금 books 테이블에는 총 22개의 레코드가 존재하는데요

예시에서야 데이터의 수가 얼마 안 되지만, 실무에서는 테이블에 존재하는 레코드의 수가

몇 만, 몇 십만 정도는 우습게 훌쩍 넘어버리죠 ^^

 

특정 조건으로 데이터를 조회한다고 했을 때

몇 만 개, 몇 십만 개를 꼭 한 번에 다 조회하여 출력할 필요가 있을까요?

일정 갯수만큼 규칙적으로 끊어서

페이징 처리를 하여 데이터를 조회하는게 더 효율적일 겁니다 ^^

 

 

 

그럼 LIMIT 구를 어떻게 이용하면 될지 예시를 들어보겠습니다 ^^!

 

SELECT    조회대상컬럼    FROM    테이블이름    LIMIT  조회갯수

구조가 되겠습니다 ^^

22개의 데이터 중에서 id값이 1번인 데이터부터 10번인 데이터까지

LIMIT 값만큼 데이터를 조회하여 화면에 출력하였습니다

 

근데 LIMIT 키워드만 이용하면 항상 첫 데이터부터 해당 갯수만큼 끊어서 조회를 하는데요

중간부터 시작해서 일정 갯수만큼 조회를 하려면 어떻게 해야할까요?

 

 

 

 

그럴땐 이와 같이 OFFSET 값을 지정해주시면 되겠습니다 ^^

OFFSET 값이 10이라는건 10 이후부터 일정 갯수만큼 조회하라는 의미이죠!

LIMIT ~ OFFSET ~ 구문을 조금 축약해서 사용할 수도 있는데요

 

 

 

 

OFFSET 키워드를 생략하고 두 값 사이를 콤마(,)로

분리를 해주셔도 동일한 결과를 조회할 수 있습니다 ^^

LIMIT 키워드 뒤에 숫자를 콤마로 구분할 경우에는

첫 번째 값이 OFFSET 값,

두 번째 값이 LIMIT 값이 됩니다 ^^!

 

이 구문 역시 키워드의 기재 순서가 관여가 되는데요

혹시 OFFSET 값을 먼저 쓰거나 또는 OFFSET 값만 기재하면 어떻게 될까요?

 

 

 

 

SQL문의 올바른 형태는 LIMIT ~ OFFSET ~ 입니다

근데 순서를 바꿔서 기재를 하니 문법 오류를 뜻하는 표시가 출력됩니다 ^^

 

 

 

 

OFFSET 값만 기재를 했을 때에도 마찬가지로 문법에 오류가 있음을 나타내줍니다 ^^

 

참고로 LIMIT 구는 표준 SQL문은 아닙니다

MySQL과 PostgreSQL과 같은 특정 제품에서만 사용할 수 있는 키워드입니다!

SQL Server 또는 Oracle에서는 다른 방법으로 해당 기능을 적용해야죠 ^^

 

 

 

 

그럼 마지막으로 WHERE 조건문과 ORDER BY 정렬, LIMIT구를 적용해서

조금 더 복잡한 조건으로 조회를 해볼까요? ^^

 

일단 LIMIT ~ OFFSET ~ 구를 이용하지 않은,

해당 조건을 만족하는 전체 데이터에 대한 조회 결과입니다

이 데이터를 5개씩 페이징 처리를 해볼까요?

 

 

 

 

예시 샘플로, 해당 조건으로 조회한 전체 데이터를 처음 순서부터

5개씩 끊어서 세 번 보여드렸습니다 ^^

조건에 대한 전체 데이터와 비교해서 확인해보면

5개씩 페이징 처리가 된 것을 알 수가 있죠 ^^?

 

 

 

다음 포스트에서는 레코드의 특정 필드 값을 이용해서

수치를 연산하여 가공하는 작업을 한 번 해보겠습니다 ^^!