본문 바로가기
공부/mysql

Mysql 기본명령어 7 (LIMIT, OFFSET)

by signature95 2022. 1. 27.
728x90
반응형

이전 포스트에 이어서 작성하는 내용입니다.

2022.01.25 - [공부/mysql] - Mysql 기본명령어 6 (ORDER BY)

 

Mysql 기본명령어 6 (ORDER BY)

이전 포스트에 이어서 작성하는 내용입니다. 2022.01.25 - [공부/mysql] - Mysql 기본명령어 5 (LIKE) Mysql 기본명령어 5 (LIKE) 지난 포스트에 이어서 작성하는 내용입니다. 2022.01.24 - [공부/mysql] - Mysql..

signature95.tistory.com

 

이번에는 SELECT 명령어로 나오는 출력물의 행을 제한할 수 있는 LIMIT에 대해서 알아보고자 합니다.

 

명령어의 형식은 다음과 같습니다

 

SELECT row_name FROM table_name LIMIT row_num [OFFSET start_row] ;

 

또한, WHERE, ORDER BY로 조건문을 넣는 경우, 

 

SELECT row_name FROM table_name WHERE 조건식 ORDER BY row_name LIMIT row_num [OFFSET start_row] ;

 

하지만, LIMIT 명령어는 표준 SQL 명령이 아니라 mysql, postgreSQL에서만 사용가능한 문법입니다.

 

그렇다면 바로 실습을 하기 전에 테이블을 살펴보겠습니다.

만일 LIMIT 3으로 걸어 놓고 시작하는 행을 2번째로 설정한다면 다음과 같이 시행할 수 있습니다.

 

2번째 행부터 출력하지만, 프로그램에서는 1을 입력해야 함. (0번째가 1번째로 인식하기 때문)

 

LIMIT 기능을 사용하는 경우는 보통 웹을 구현할 때, 한 페이지에 5개, 10개 등을 표시하고 다음 페이지에 다음 내용을 표시하는 경우 사용할 수 있을 것입니다. 

아마 이런 형태로 출력할 수 있을 것입니다. 

보통 커뮤티티, 홈페이지 등 해당 클라이언트의 브라우저에서 모든 정보를 한번에 불러오게 된다면 속도, 기능, 효율성 측면에서 다소 떨어지기 때문에 pagination (페이지 나누기) 기능을 사용하게 됩니다. 

 

이를 구현하게 된다면, LIMIT에는 한번에 몇개의 데이터를 볼 것인지 설정할 수 있을 것이고, 그에 맞춰 OFFSET도 설정하면 되는 것입니다.

 

LIMIT (20,40,50,100개씩 출력하도록 입력하는 변수) OFFSET (0 + 20,40,50,100개씩 출력하도록 입력하는 변수 * 페이지 개수) 이런 형태로 구현할 수 있는 것이죠.

 

그렇다면 이번에는 인터넷 쇼핑에서 제공하는 데이터를 예시로 봅시다. 보통 판매 TOP, 리뷰평점 TOP 등 상위 몇개를 표시하는 부분을 사이트에서 확인할 수 있을 것입니다. 

 

다시 돌아와서 table에 있는 데이터에서 상위 3개를 뽑아보도록 해봅시다. 이는 ORDER BY를 응용해서 내림차순으로 정렬하게 된다면, 상위 3개만 뽑을 수 있을 것입니다. 

 

따라서 이번에는 상위 3개의 no를 뽑아보도록 하겠습니다.

 

명령문은 다음과 같습니다.

SELECT * FROM sample33 ORDER BY no DESC LIMIT 3;

 

728x90

댓글