728x90
※ SQL: ASC, DESC.
안녕하세요. 듀스트림입니다.
오늘 포스팅은 반드시 꼭! 알아야 되는 정렬 순서에 대한 내용입니다.
ASC와 DESC는 SQL에서 정렬 순서(ordering direction) 를 지정할 때 사용하는 키워드입니다.
보통 ORDER BY 절과 함께 사용되며,
결과를 오름차순(ascending) 또는 내림차순(descending)으로 정렬합니다.
1. ASC (Ascending Order)
의미: 오름차순 정렬 (작은 값 → 큰 값)
- 숫자: 1, 2, 3, 4 …
- 문자: A, B, C …
- 날짜: 오래된 날짜 → 최근 날짜
기본값이므로 ASC는 생략해도 동일하게 동작합니다.
SELECT name, age
FROM employee
ORDER BY age ASC;
-- 아래처럼 생략해도 동일한 의미입니다.
SELECT name, age
FROM employee
ORDER BY age;
2. DESC (Descending Order)
의미: 내림차순 정렬 (큰 값 → 작은 값)
- 숫자: 100, 99, 98 …
- 문자: Z, Y, X …
- 날짜: 최근 날짜 → 오래된 날짜
SELECT name, age
FROM employee
ORDER BY age DESC;
3. 다중 컬럼 정렬
다중 컬럼을 기준으로 정렬할 때는 순서대로 적용됩니다.
SELECT name, department, salary
FROM employee
ORDER BY department ASC, salary DESC;
→ 부서(department)는 오름차순으로, 같은 부서 내에서는 급여(salary)를 내림차순으로 정렬합니다.
4. NULL 정렬 제어 (PostgreSQL 기준)
PostgreSQL에서는 NULLS FIRST / NULLS LAST 옵션으로 NULL 값이 어디에 올지를 지정할 수 있습니다.
-- 나이 오름차순, NULL은 가장 마지막에 배치
SELECT name, age
FROM employee
ORDER BY age ASC NULLS LAST;
-- 나이 내림차순, NULL은 가장 위에 배치
SELECT name, age
FROM employee
ORDER BY age DESC NULLS FIRST;
5. 테스트 (PostgreSQL 기준)
▸ 테스트 테이블 생성
CREATE TABLE employee (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
age INT
);
▸ 테스트 데이터 삽입
INSERT INTO employee (name, age) VALUES
('Alice', 25),
('Bob', NULL),
('Charlie', 30),
('David', 22),
('Eve', NULL),
('Frank', 40),
('Grace', 35)
;
▸ 테스트 쿼리 실행
-- 나이 오름차순, NULL은 마지막에
SELECT name, age
FROM employee
ORDER BY age ASC NULLS LAST;

-- 나이 내림차순, NULL은 가장 위로
SELECT name, age
FROM employee
ORDER BY age DESC NULLS FIRST;

긴 연휴가 끝났습니다.
다시 또 연말까지 파이팅!
오늘은 여기까지~
728x90
'SQL' 카테고리의 다른 글
| SQL: 실행 순서 (0) | 2025.10.24 |
|---|---|
| SQL: EXISTS / NOT EXISTS (0) | 2025.10.15 |
| SQL: ROLLUP (0) | 2025.09.29 |
| SQL: 인라인뷰 (0) | 2025.09.26 |
| SQL: 슬로우 쿼리 패턴 (0) | 2025.09.24 |