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
'데이터 베이스 > SQL 첫걸음(인프런 강의)' 카테고리의 다른 글
| Ch04. 조회와 정렬 - Distinct (0) | 2025.10.17 |
|---|---|
| Ch04. 조회와 정렬 - Limit (0) | 2025.10.17 |
| Ch04. 조회와 정렬 - where (0) | 2025.10.17 |
| Ch04. 조회와 정렬 - Select(조회) (0) | 2025.10.13 |
| Ch03. 데이터 관리 - 제약 조건 활용 (0) | 2025.10.08 |