CodeGym /행동 /SQL SELF /행 개수 제한하기 (LIMIT)랑 결과 제어하기

행 개수 제한하기 (LIMIT)랑 결과 제어하기

SQL SELF
레벨 3 , 레슨 0
사용 가능

쿼리로 반환되는 행 개수를 어떻게 제한하지? 만약 너가 딱 처음 5명의 학생만 필요하거나, 월급 제일 높은 직원 한 명, 또는 top-10 상품 리스트만 보고 싶으면 LIMIT이 바로 그거야!

DB 다루다 보면 쿼리 결과가 엄청 많을 때가 많아. 이럴 땐 반환되는 데이터 양을 제한해야 하는데, 그 이유는:

  1. 서버랑 네트워크에 부담을 줄이려고.
  2. 끝도 없는 페이지 스크롤 안 하고 데이터 분석을 쉽게 하려고.

간단한 비유로 설명할게: 너가 바에서 여자한테 술 한 잔 사주려고 했는데, 실수로 모든 손님 술값을 계산해버렸다고 생각해봐. 멋지긴 한데, 굳이 그렇게까지 할 필요 없잖아? 그래서 우리는 딱 필요한 것만 주문하는 법을 배우는 거고, LIMIT이 그걸 도와줘.

기본 LIMIT 문법

이렇게 쓰면 돼:

SELECT 컬럼1, 컬럼2
FROM 테이블
LIMIT 행_개수;

예시 1: 행 제한하기

예를 들어, students 테이블에 1000개 행이 있다고 해보자. 우리는 처음 3개만 보고 싶어:

SELECT *
FROM students 
LIMIT 3;

결과:

id name age
1 Otto 20
2 Anna 22
3 Alex 19

진짜 간단하지? 긴 리스트 대신 딱 3줄만 보여. LIMIT이 우리가 요청한 만큼만 반환해준 거야.

LIMIT 실전 활용

예시 2: top-상품

너가 products 테이블에서 제일 비싼 상품 5개 이름이랑 가격만 보고 싶다고 해보자. 먼저 가격 내림차순으로 정렬하고, 결과를 제한하면 돼:

SELECT product_name, price
FROM products 
ORDER BY price DESC 
LIMIT 5;

결과:

product_name price
iPhone 16 Pro Max 1500
MacBook Pro 1200
AirPods Pro 300
iPad Pro 280
Apple Watch 250

이제 제일 비싼 top-5 상품만 볼 수 있지.

LIMIT으로 쿼리 테스트하기

SQL 쿼리 만들 때 데이터가 엄청 많을 수 있어. LIMIT을 쓰면 일단 쿼리가 잘 동작하는지 소량 데이터로 먼저 확인할 수 있어. 예를 들어:

SELECT *
FROM transactions_log
LIMIT 10;

쿼리 로직이 맞는지 확인했으면 LIMIT을 빼면 돼.

LIMIT 쓸 때 주의할 점

1. ORDER BY 없이 LIMIT 쓰기

ORDER BY를 안 쓰면 LIMIT이 데이터를 랜덤하게, 아니면 테이블에 저장된 순서대로 반환해. 보통은 상관없지만, 가끔은 예측 불가한 결과가 나올 수 있어.

예를 들어:

SELECT name, age
FROM students 
LIMIT 3;

ORDER BY 없이 쓰면 어떤 3개가 나올지 확실하지 않아.

이럴 땐 ORDER BY를 꼭 써줘:

SELECT name, age
FROM students 
ORDER BY age DESC 
LIMIT 3;

2. WHERE랑 같이 쓰기

WHERE로 행을 필터링하고 LIMIT으로 결과 개수를 제한할 수 있어. 데이터가 너무 많을 때, 처음 몇 개만 보고 싶을 때 딱이야.

SELECT *
FROM students 
WHERE age > 18 
LIMIT 5;

이 쿼리는 18살 넘는 학생 중 처음 5명만 반환해.

3. 실전: 첫 페이지 데이터 보기

데이터 보여주는 시스템(예: 웹앱)에서 LIMIT을 써서 첫 페이지 데이터만 보여줄 수 있어.

SELECT *
FROM employees 
ORDER BY hire_date 
LIMIT 10;

이렇게 하면 입사일 순으로 정렬된 직원 10명만 볼 수 있어.

심화 예시: LIMIT이랑 집계 함수 같이 쓰기

예를 들어, 제일 인기 많은 상품 카테고리 3개만 보고 싶다고 해보자:

SELECT category, COUNT(*) AS total_products
FROM products 
GROUP BY category 
ORDER BY total_products DESC 
LIMIT 3;

이 쿼리는 먼저 카테고리별로 묶고, 개수로 정렬한 다음, 3개만 남겨.

GROUP BY 연산자랑 COUNT() 함수가 어떻게 동작하는지는 다음 강의에서 더 자세히 배울 거야.

LIMIT 쓸 때 흔한 실수

LIMIT을 쓰다 보면 이런 문제들이 생길 수 있어:

"행 순서가 랜덤": ORDER BY를 빼먹으면 데이터가 예상치 못한 순서로 올 수 있어. 순서가 중요하면 꼭 정렬 기준을 써줘.

"중요한 데이터 누락": 만약 정렬 기준 컬럼 값이 같은 행이 여러 개면, LIMIT이 결과를 다 안 보여줄 수도 있어. 이런 경우엔 정렬 기준을 더 추가해줘야 해.

SELECT *
FROM students 
ORDER BY age DESC, name ASC 
LIMIT 5;

"WHERE랑 조합이 이상함". 가끔 필터 조건이 너무 좁으면 LIMIT이 의미 없어져. 예를 들어, WHERE로 2개만 남는데 LIMIT이 10이면, 결국 2개만 나와.

"DB마다 다름". 어떤 DBMS는 행 제한 문법이 달라 (예: SQL Server에선 TOP 씀). PostgreSQL은 LIMIT을 써.

실생활에서 LIMIT이 왜 필요할까?

레코드가 많은 인터페이스: 예를 들어, 인터넷 쇼핑몰에서 상품을 페이지별로 볼 때. 첫 페이지에 10개만 보여주고, LIMIT이 그걸 가능하게 해줘.

리포트: 보통 상위 데이터만 궁금할 때가 많아 (예: top-5 직원, 판매왕, 점수 제일 높은 학생 등).

쿼리 테스트랑 최적화: 수백만 행을 다루는 대신, 소량 데이터로 쿼리를 빠르게 테스트할 수 있어.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION