프로그래밍/MySQL

📊 [SQL 프로젝트] 제5장 ORDER BY - 원하는 순서대로 정렬하기

강릉바다의 블로그 2026. 6. 27. 08:21

제5장 ORDER BY - 원하는 순서대로 정렬하기


오늘의 질문

여러분이 인터넷 쇼핑몰에서 노트북을 검색했다고 생각해 봅시다.

검색 결과가 500개가 나왔습니다.

그런데 여러분은 이렇게 생각합니다.

"가격이 가장 저렴한 것부터 보고 싶은데?"

 

이번에는 부모님이 말씀하십니다.

"비싼 제품부터 한번 보자."

 

또는 회사에서는

"최근 주문부터 보여 주세요."

 

이처럼 데이터를 어떤 순서로 보여 줄 것인지 결정하는 명령어가 바로 ORDER BY입니다.


학습 목표

이번 장을 학습하면 다음 내용을 할 수 있습니다.

  • ORDER BY의 역할을 설명할 수 있다.
  • 오름차순 정렬을 할 수 있다.
  • 내림차순 정렬을 할 수 있다.
  • 여러 열을 기준으로 정렬할 수 있다.
  • ORDER BY를 실제 업무에 활용할 수 있다.

5-1. 먼저 실행해 봅시다.

다음 SQL을 실행해 보세요.

SELECT ProductName,
       Price
FROM Products
ORDER BY Price;

실행 결과를 보면

가격이 가장 낮은 상품부터 차례대로 출력됩니다.

예를 들어

ProductName Price
Geitost 2.50
Guaraná Fantástica 4.50
Konbu 6.00

처럼 나타납니다.


잠깐 생각해 보기

Products 테이블에는 원래 상품이 저장된 순서가 있습니다.

그런데 이번에는 가격순으로 바뀌었습니다.

데이터베이스 안의 데이터가 수정된 것일까요?

그렇지 않습니다.

출력 순서만 바뀐 것입니다.

ORDER BY는 데이터를 수정하지 않습니다.

단지 보여 주는 순서만 바꿉니다.


5-2. ORDER BY를 한 줄씩 읽어 보기

다음 SQL을 다시 보겠습니다.

SELECT ProductName,
       Price
FROM Products
ORDER BY Price;

한 줄씩 읽어 보면

SELECT

→ 가져와라.

ProductName, Price

→ 상품 이름과 가격을.

FROM Products

→ Products 테이블에서.

ORDER BY Price

→ Price를 기준으로 정렬하여.

즉,

Products 테이블에서 상품 이름과 가격을 가져오되, 가격순으로 정렬하여 보여 주어라.

라는 뜻입니다.


5-3. ORDER BY는 기본적으로 오름차순입니다.

많은 학생들이 이렇게 생각합니다.

"ASC를 쓰지 않았는데 왜 가격이 낮은 것부터 나오죠?"

 

좋은 질문입니다.

ORDER BY는 아무것도 쓰지 않으면

자동으로 오름차순(ASC) 을 사용합니다.

즉,

ORDER BY Price;

ORDER BY Price ASC;

는 같은 의미입니다.


5-4. ASC는 무엇일까요?

ASC는

Ascending

즉,

작은 것 → 큰 것

순서입니다.

숫자라면

10
20
30
40

문자라면

A
B
C
D

처럼 정렬됩니다.


5-5. DESC는 무엇일까요?

이번에는

비싼 상품부터 보고 싶습니다.

SELECT ProductName,
       Price
FROM Products
ORDER BY Price DESC;

이번에는

ProductName Price
Côte de Blaye 263.50
Thüringer Rostbratwurst 123.79
Mishi Kobe Niku 97.00

처럼

가장 비싼 상품부터 출력됩니다.

DESC는

Descending

즉,

큰 것 → 작은 것

입니다.


기억하기 쉬운 방법

ASC는

올라간다(Ascending)

 

DESC는

내려온다(Descending)

 

라고 기억하면 됩니다.


5-6. 이름순으로도 정렬할 수 있습니다.

상품 이름을 가나다(알파벳)순으로 보고 싶다면

SELECT ProductName
FROM Products
ORDER BY ProductName;

이번에는

A부터 Z까지 차례대로 출력됩니다.


5-7. 나라 이름순으로 고객 보기

SELECT CustomerName,
       Country
FROM Customers
ORDER BY Country;

같은 나라의 고객끼리 모여서 출력됩니다.

보고서 작성에 자주 사용하는 방법입니다.


5-8. 여러 기준으로 정렬하기

이번에는

국가가 같으면

고객 이름순으로 정렬해 보겠습니다.

SELECT CustomerName,
       Country
FROM Customers
ORDER BY Country,
         CustomerName;

정렬은

첫 번째 기준

같으면

두 번째 기준

순으로 진행됩니다.

예를 들어

Brazil
    Ana
    Carlos
    Maria

Germany
    Alfred
    Blauer
    Drachenblut

처럼 출력됩니다.


5-9. 자주 하는 실수

① ORDER를 ORDERS라고 쓴다.

잘못된 예

ORDERS BY Price;

ORDER BY입니다.


② DESC 철자를 틀린다.

DESK
DSC
DEC

모두 틀린 표현입니다.

정확하게

DESC

입니다.


③ WHERE 뒤에 ORDER BY를 쓰지 않는다.

SQL은 순서가 중요합니다.

SELECT *
FROM Customers
WHERE Country='Germany'
ORDER BY CustomerName;

순서를 기억하세요.

SELECT
FROM
WHERE
ORDER BY

④ ORDER BY를 FROM 앞에 쓴다.

이 역시 오류가 발생합니다.


실무에서는 어떻게 사용할까요?

쇼핑몰에서는

  • 가격이 싼 상품부터
  • 가격이 비싼 상품부터
  • 인기순

은행에서는

  • 거래일 최신순

병원에서는

  • 예약 시간순

학교에서는

  • 번호순
  • 이름순
  • 성적순

처럼 거의 모든 목록 화면에 ORDER BY가 사용됩니다.


실습

실습 1

가격이 낮은 상품부터 조회하세요.

SELECT ProductName,
       Price
FROM Products
ORDER BY Price;

실습 2

가격이 높은 상품부터 조회하세요.

SELECT ProductName,
       Price
FROM Products
ORDER BY Price DESC;

실습 3

고객 이름을 알파벳순으로 조회하세요.

SELECT CustomerName
FROM Customers
ORDER BY CustomerName;

실습 4

국가순으로 정렬하고,

같은 국가에서는 고객 이름순으로 조회하세요.

SELECT CustomerName,
       Country
FROM Customers
ORDER BY Country,
         CustomerName;

핵심 정리

✔ ORDER BY는 조회 결과의 순서를 정렬한다.

✔ 기본 정렬은 ASC(오름차순)이다.

✔ DESC를 사용하면 내림차순으로 정렬된다.

✔ 여러 열을 기준으로 정렬할 수 있다.

✔ ORDER BY는 데이터를 수정하지 않고, 출력 순서만 바꾼다.


연습 문제

기본 문제

  1. ORDER BY의 역할을 설명해 보세요.
  2. ASC와 DESC의 차이를 설명해 보세요.
  3. ORDER BY를 사용하지 않으면 어떤 순서로 출력될까요?

응용 문제

  1. Products 테이블에서 가격이 낮은 순으로 상품 이름과 가격을 조회하는 SQL을 작성하세요.
  2. Customers 테이블에서 고객 이름을 역순(Z→A)으로 조회하는 SQL을 작성하세요.
  3. Customers 테이블에서 국가순, 같은 국가에서는 도시(City)순으로 조회하는 SQL을 작성하세요.

도전 문제

사장님이 다음과 같이 요청했습니다.

"상품 이름과 가격을 보여 주는데, 가장 비싼 상품부터 보고 싶습니다."

 

필요한 열만 선택하여 SQL을 작성해 보세요.


다음 장 예고

이번 장에서는 원하는 순서대로 정렬하는 방법을 배웠습니다.

그런데 상품이 77개라면 모두 볼 필요가 있을까요?

사장님은 아마 이렇게 말할 것입니다.

"가격이 가장 비싼 5개 상품만 보여 주세요."

 

또는

"가장 최근 주문 10건만 보여 주세요."

 

이처럼 필요한 개수만 조회하는 방법이 바로 LIMIT입니다.

다음 장에서는 LIMIT - 필요한 만큼만 가져오기를 배우며, ORDER BY와 함께 사용하는 가장 강력한 조회 방법을 익혀 보겠습니다.