Study/DB

[SQL 첫걸음] 3장.정렬과 연산 - 11.결과 행 제한하기(LIMIT)

momo02 2018. 8. 28. 22:30
반응형

저자 : 아사이 아츠시

출판 : 한빛미디어 

발매 : 2015.11.01

 

 

- LIMIT 구로 결과 행을 제한하는 방법 : 
SELECT 열명 FROM 테이블명 LIMIT 행수 [OFFSET 시작행] 

 

 


1. 행 수 제한 
- LIMIT 구는 표준 SQL은 아님. MySQL과 PostgreSQL에서 사용할 수 있는 문법임.
- LIMIT 구는 SELECT 명령의 마지막에 지정하는 것으로 WHERE구나 ORDER BY구의 뒤에 지정.
SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 LIMIT 행수 (최대행수)

* 정렬한 후 제한하기
- LIMIT는 반환할 행수를 제한하는 기능으로, WHERE구로 검색한 후 ORDER BY로 정렬된 뒤 최종적으로 처리. 

 

no열을 내림차순으로 정렬한 뒤에 상위 3개 행 조회

 

* LIMIT를 사용할 수 없는 디비에서의 행 제한.
- LIMIT는 표준 SQL이 아니기 때문에 MySQL과 PostgreSQL 이외의 데이터베이스에서는 사용 불가.

- SQL Server에서는 비슷한 'TOP'를 사용. 아래와 같이 TOP 뒤에 최대 행수를 지정.
: SELECT 
TOP 3 * FROM sample33;

-
 Oracle에서는 ROWNUM이라는 열을 사용해 WHERE 구로 조건을 지정하여 행을 제한.
: SELECT * FROM sample33 WHERE 
ROWNUM <=3;
ROWNUM은 클라이언트에게 결과가 반환될 때 각 행에 할당되는 행 번호. 
(단,ROWNUM으로 행을 제한할 때는 WHERE 구로 지정하므로 정렬하기 전에 처리되어 LIMIT로 행을 제한한 경우와 결과값이 다름.)

 

 

 

2. 오프셋 지정
- 대량의 데이터를 나타낼 때, 일반적으로 페이지 나누기(pagination)기능을 사용. 이 페이지 나누기 기능을 LIMIT를 사용해 간단히 구현 가능. 
만약 한 페이지당 5건의 데이터를 표시하도록 한다면 첫번째 페이지의 경우 LIMIT 5로 결괏값을 표시. 그 다음 페이지에서는 6번째 행부터 5건의 데이터를 표시하도록 해야하는데 이때 
'6번째 행부터'라는 표현은 결괏값으로부터 데이터를 취득할 위치를 가리키는 것으로 LIMIT구에 OFFSET으로 지정 가능.

 

출처 : SQL 첫걸음

 

: SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 위치(인덱스 0부터) 
- LIMIT구의 OFFSET은 생략 가능하며 생략 시 기본값은 0.

 

 

반응형