자격증/SQLD

[SQL 첫걸음] 11강. 결과 행 제한하기- LIMIT

동호다찌 2022. 4. 4. 09:22

1. LIMIT구

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

2. 행수 제한

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

2-1. LIMIT구 문법

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

2-2. 정렬한 후 제한하기

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

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

SQL Server

  • SQL Server에서는 TOP 뒤에 최대행수를 지정한다.
SELECT TOP 최대행수 * FROM 테이블명;

ORACLE

SELECT * FROM 테이블명 WHERE ROWNUM <= 행개수;

ROWNUM: 클라이언트에게 결과가 반환될 때, 각 행에 할당되는 행 번호

  • 단, ROWNUM으로 행을 제한할 때는 WHERE구로 지정하므로 정렬하기 전에 처리되어
    LIMIT구로 행을 제한한 경우와 결과값이 다르다!

3. 오프셋 지정

페이지 나누기 기능

3-1. OFFSET 지정 문법

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