PostgreSQL
SQL이 뭐지? 8강 시작합니다.
이번 강의에서는
▶ LIMIT clause
▶ FETCH clause
에 대해서 알아보겠습니다.
1. PostgreSQL LIMIT clause
● 기본 구문 ●
PostgreSQL LIMIT는 쿼리에서 반환되는 행 수를 제한하는 SELECT 문의 선택적 절입니다.
SELECT select_list
FROM table_name
ORDER BY sort_expression
LIMIT row_count;
SQL문은 쿼리에 의해 생성된 row_count 행을 반환합니다.
row_count가 0이면 쿼리는 빈 집합을 반환합니다.
row_count가 NULL인 경우 쿼리에 LIMIT 절이 없는 것과 동일한 결과 집합이 반환됩니다.
row_count는 0 이상의 숫자를 SET 할 수 있습니다.
● 기본 구문 ●
row_count 행을 반환하기 전에 여러 행을 건너뛰려는 경우
LIMIT 절 뒤에 OFFSET 절을 사용합니다.
SELECT select_list
FROM table_name
LIMIT row_count OFFSET row_to_skip;
SQL문은 쿼리에 의해 생성된 row_count 행을 반환하기 전에 먼저 row_to_skip 행을 건너뜁니다.
row_to_skip이 0이면, SQL문은 OFFSET 절이 없는 것처럼 작동합니다.
테이블은 지정되지 않은 순서로 행을 저장할 수 있으므로 LIMIT 절을 사용할 때는
항상 ORDER BY 절을 사용하여 행 순서를 제어해야 합니다.
ORDER BY 절을 사용하지 않을 경우 지정되지 않은 행 순서로 결과 집합을 얻을 수 있습니다.
♥ 실습 1 ♥
LIMIT 절을 사용하여 film_id별로 정렬된 처음 5개의 필름을 가져옵니다.
SELECT
film_id
, title
, release_year
FROM
film
ORDER BY
film_id
LIMIT 5;
♥ 실습 2 ♥
film_id에 의해 주문된 네 번째 필름에서 시작하는 4개의 필름을 검색하려면
다음과 같이 LIMIT 절과 OFFSET 절을 모두 사용합니다.
SELECT
film_id
, title
, release_year
FROM
film
ORDER BY
film_id
LIMIT 4 OFFSET 3;
♥ 실습 3 ♥
일반적으로 LIMIT 절을 사용하여 표에서 값이 가장 높거나 낮은 행을 선택하는 경우가 많습니다.
예를 들어 대여료가 가장 비싼 상위 10개의 영화를 가져오려면 대여료를 내림차순으로 영화를 정렬하고
LIMIT 절을 사용하여 처음 10개의 영화를 가져옵니다. 다음 쿼리는 아이디어를 보여줍니다.
SELECT
film_id
, title
, rental_rate
FROM
film
ORDER BY
rental_rate DESC
LIMIT 10;
2. PostgreSQL FETCH clause
쿼리에서 반환되는 행 수를 제한하기 위해 LIMIT 절을 사용하는 경우가 많습니다.
LIMIT 절은 MySQL, H2 및 HSQLDB와 같은 많은 관계형 데이터베이스 관리 시스템에서 널리 사용되지만
LIMIT 절은 SQL 표준이 아닙니다.
SQL 표준을 준수하려면, FETCH 절을 사용하여야 합니다.
PostgreSQL은 FETCH 절을 지원하여 쿼리에서 반환된 여러 행을 검색합니다.
● 기본 구문 ●
다음은 Postgre의 구문을 보여줍니다.SQL FETCH 절입니다.
OFFSET start { ROW | ROWS }
FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLY
이 구문에서는 다음을 수행합니다.
ROW는 ROWS의 동의어이고 FIRST는 NEXT의 동의어입니다.
따라서 이들을 서로 교환하여 사용할 수 있습니다.
시작은 0 또는 양수여야 하는 정수입니다.
OFFSET 절을 지정하지 않으면 기본적으로 0이 됩니다.
시작이 결과 집합의 행 수보다 클 경우에는 행이 반환되지 않습니다.
row_count가 1 이상입니다. 명시적으로 지정하지 않으면 기본적으로 row_count 값은 1입니다.
테이블에 저장된 행의 순서가 지정되지 않았기 때문에 반환된 결과 집합의 행 순서를 일관되게 하려면 항상 ORDER BY 절과 함께 FETCH 절을 사용해야 합니다.
ANSI 표준은 OFFSET 절이 FETCH 절 앞에 와야 합니다.
그러나 OFFSET 및 FETCH 절은 PostgreSQL에서는 임의의 순서로 나타날 수 있습니다.
● FETCH vs. LIMIT ●
FETCH 절은 LIMIT 절과 기능적으로 동일합니다.
응용 프로그램을 다른 데이터베이스 시스템과 호환되도록 하려면 FETCH 절을 사용해야 합니다.
FETCH 절은 표준 SQL을 따르기 때문입니다.
※ SQL 표준에 대해서는 별도로 포스팅할 예정입니다.
♥ 실습 1 ♥
다음 쿼리는 FETCH 절을 사용하여 제목별로 정렬된 첫 번째 필름을 오름차순으로 선택합니다.
FETCH FIRST ROW ONLY,와 FETCH FIRST 1 ROW ONLY 같은 결과를 보여줍니다.
SELECT
film_id
, title
FROM
film
ORDER BY
title
FETCH FIRST ROW ONLY;
♥ 실습 2 ♥
다음 쿼리는 FETCH 절을 사용하여 제목별로 정렬된 처음 5개의 필름을 선택합니다.
SELECT
film_id
, title
FROM
film
ORDER BY
title
FETCH FIRST 5 ROW ONLY;
♥ 실습 3 ♥
다음 쿼리는 제목별로 정렬된 처음 5개의 영화 다음 5개의 영화를 반환합니다.
SELECT
film_id
, title
FROM
film
ORDER BY
title
OFFSET 5 ROWS
FETCH FIRST 5 ROW ONLY;
지금까지 PostgreSQL의 FETCH와 LIMIT에 대해서 공부했습니다.
다른 테이블로 쿼리 많이 연습해 보시고 익숙해 지시기 바랍니다.
다음 강의에서 뵙겠습니다.
본 강의는 PostgreSQL Tutorial을 참조합니다.
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
10강 SQL이 뭐지? PostgreSQL : BETWEEN operator (5) | 2022.12.15 |
---|---|
9강 SQL이 뭐지? PostgreSQL : IN에 대해서 (2) | 2022.12.15 |
7강 SQL이 뭐지? WHERE 절 (3) | 2022.12.13 |
6강 SQL이 뭐지? SELECT DISTINCT 뽀개기 (3) | 2022.12.13 |
5강 SQL이 뭐지? Column Aliases ORDER BY (4) | 2022.12.13 |
댓글