SQL 3일차(2) 09-10

박철민·2021년 7월 22일
0

제로베이스SQL100제

목록 보기
5/19
post-thumbnail

수강 날짜 20.07.21

09 강의명 : LIMIT절
10 강의명 : FETCH절

LIMIT절

특정 집합을 출력 시 출력하는 행의 수를 한정하는 역할을 한다. 부분 범위 처리시 사용.

**실습

-리미트 안 할 시

SELECT film_id, title, release_year 
  FROM film
 ORDER BY film_id;

-리미트 할 시

SELECT film_id, title, release_year 
  FROM film
 ORDER BY film_id
 LIMIT 5;

원하는 값의 개수를 조절 할 수 있다.
상위 값 일부분 혹은 하부 값 일부분을 구할 수 있다.
우리는 첫번째부터 몇개 까지를 구할 수 있게 되었다.

그렇다면 중간 부터 집계는 불가능한가?

중간 부터 해결을 위해서는 'OFFSET'을 사용한다.

OFFSET의 사용

특정 집합을 출력 시 출력하는 행의 수를 한정하는 역할을 한다. 부분 범위 처리시 사용.

실습

SELECT film_id, title, release_year 
  FROM film
 ORDER BY film_id
 LIMIT 4
OFFSET 3;

보면 4,5,6,7 번째 값이 출력된 것을 확인 할 수 있다.

LIMIT X
OFFSET Y
-> X이후 Y번째 까지 출력한다.

FETCH 절

리미트절을 똑같이 구현할 수 있다.
특정 집합을 출력 시 출력하는 행의 수를 한정하는 역할을 한다. 부분 범위 처리시 사용된다.

FETCH 절 문법 :

  • FETCH FIRST [N] ROW ONLY
    => 출력하는 행의 수를 지정한다. N을 입력하지 않고 ROW ONLY만 입력한 단 한 건만 출력한다.

이렇게 만 보았을 때 잘 이해가 가지 않아 쿼리를 치고 그 결과를 비교하여 무슨 의미인지 확인을 해보았다.

쿼리1

select film_id , title
  from film
 order by title 
 fetch first 1 row only		--1은 생략 가능

결과

쿼리2

select film_id , title
  from film
 order by title 
 fetch first 4 row only	

결과

지정한 숫자 만큼 나온다 -> LIMIT과 같다

둘의 차이점이 궁금하여 찾아보니
https://cording-artist.tistory.com/121
이 사이트를 참고하니 DB종류에 따라 LIMIT인지 FETCH인지 정해진다고 한다. PostgreSql은 둘 다 가능하다고 한다.

쿼리3(OFFSET 병행)

select film_id , title
  from film
 order by title 
offset 5 rows				
 fetch first 5 row only 	

OFFSET LIMIT과 동일하다.

profile
취준좀비 컴공

0개의 댓글