데이터 베이스/SQL 첫걸음(인프런 강의)

Ch04. 조회와 정렬 - order by

webmaster 2025. 10. 17. 22:01
728x90

SELECT와WHERE  사용해서 데이터를 조회하면, 결과는 어떤 순서로 나올까? 정답은 ' 없다' 또는 '데이터베이스 마음대로'이다. 데이터베이스는 데이터를 가장 효율적으로 저장하고 관리할 , 우리가 조회할 특정 순서대로 보여줘야 의무가 없다. 어떨 때는 기본 (PRIMARY KEY) 순서로, 어떨 때는 데이터가 삽입된 순서로 보이는 일관성이 없다.

따라서 데이터를 분석하거나 보고서를 만들 때는 의미 있는 순서로 나열하는 과정이 반드시 필요하다. '최신순', '가격 높은순높은 순', '이름 가나다순' 처럼 말이다. 이럴 사용하는 것이 ORDER BY 절이다

 

결과를 순서를 지정하는 ORDER BY

SELECT 열이름
FROM 테이블이름
WHERE 조건
ORDER BY 정렬기준열 [정렬방식];
  • [정렬방식] 은 생략 가능
  • ORDER BY 절은 SELECT 문의 가장 마지막에 위치하며, 조회된 결과를 특정 열의 값을 기준으로 정렬하는 역할을 한다.

정렬 방식에는 다음 가지가 있다.

  • ASC(Ascending): 오름차순 정렬. 작은 값에서 큰 값으로 (1, 2, 3... / A, B, C... / 오래된 날짜부터 최신 날짜로).
    • ORDER BY 기본값이므로 생략할 있다.
    • 점점 올라간다고 외우면 쉽다.
  • DESC (Descending): 내림차순 정렬. 값에서 작은 값으로 (10, 9, 8... / Z, Y, X... / 최신 날짜부터 오래된 날짜로).
    • 내림차순을 원할 경우 반드시 명시해야 한다.
    • 점점 내려간다고 외우면 쉽다.

실습 1) customers 테이블을 가입일(join_date) 최신순으로 정렬하기

select * 
from customers
order by join_date desc;

 

실습 2)  products 테이블을 가격(price) 낮은 순으로 정렬하기

select * 
from products
--order by price asc; -- asc 생략 가능
order by price;

정렬 기준이 여러 개라면?

ORDER BY 절에 여러 개의 열 이름을 콤마(,)로 구분하여 나열하면 된다. 정렬의 우선순위는 당연히 먼저 쓴 열부터 적용된다.

ORDER BY 1차정렬열 [정렬방식], 2차정렬열 [정렬방식], ...

 

실습) products 테이블을 재고수량 내림차순, 가격 오름차순으로 정렬하기

SELECT * FROM products ORDER BY stock_quantity DESC, price ASC;
-- price의 ASC는 생략 가능

 

728x90