SQL

SQL: ASC, DESC

dewstream 2025. 10. 13. 08:00
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