SQL 첫걸음- 11강

11강. 결과 행 제한하기- LIMIT

LIMIT구

1
mysql> SELECT 열명 FROM 테이블명 LIMIT 행수 [OFFSET 시작행];


1. 행수 제한

  • LIMIT구는 표준 SQL은 아니다.
  • MYSQLPostgreSQL에서 사용할 수 있는 문법

LIMIT구 문법

1
mysql> SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 LIMIT 함수;
  • LIMIT 다음에는 최대 행수를 지정한다.
  • 만약, 테이블에 1개의 행만 있다면, LIMIT 3으로 지정하더라도 1개의 행만 반환된다.
  • LIMIT으로 제한하는 행수는 최대 행수이므로 존재하는 행이 더 적으면 존재하는 해당 행만큼
    반환된다!

정렬한 후 제한하기

  • LIMITWHERE와는 기능과 내부처리 순서가 전혀 다르다!
  • LIMIT
    • 반환할 행수를 제한하는 기능
    • WHERE구로 검색한 후, ORDER BY로 정렬된 뒤 최종적으로 처리된다.

LIMIT을 사용할 수 없는 데이터베이스에서의 행 제한

SQL Server
1
SELECT TOP 최대행수 * FROM 테이블명;
  • SQL Server에서는 TOP 뒤에 최대행수를 지정한다.
ORACLE
1
SELECT * FROM 테이블명 WHERE ROWNUM <= 행개수;
  • ROWNUM: 클라이언트에게 결과가 반환될 때, 각 행에 할당되는 행 번호
  • 단, ROWNUM으로 행을 제한할 때는 WHERE구로 지정하므로 정렬하기 전에 처리되어
    LIMIT구로 행을 제한한 경우와 결과값이 다르다!

2. 오프셋 지정

  • 페이지 나누기 기능

OFFSET 지정 문법

1
mysql> SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 위치;
  • OFFSET에 의한 시작 위치 지정은 LIMIT 뒤에 적는다.
  • OFFSET의 위치 지정은 0부터 시작하기 때문에 시작할 행 -1로 적는다.
  • ex) 4행부터 3건의 데이터를 표시한다면, 위치는 4행-1인 3으로 넣는다.
1
mysql> SELECT * FROM 테이블명 LIMIT 3 OFFSET 3;