- 0
- 151 단어
ORDER BY는 SQL에서 조회한 데이터를 원하는 기준에 따라 정렬할 때 사용하는 구문입니다. 데이터를 단순히 조회하는 것에서 그치지 않고 가격이 높은 순서, 이름이 가나다순, 등록일이 최신순과 같이 특정 기준으로 결과를 정리할 수 있습니다. 데이터베이스에 저장된 순서와 조회 결과의 정렬 순서는 서로 다를 수 있으므로, 원하는 순서를 지정하려면 ORDER BY를 사용해야 합니다.
ORDER BY의 기본 개념
SELECT를 사용하면 테이블에 저장된 데이터를 조회할 수 있지만, 조회 결과가 사용자가 원하는 순서로 표시된다는 보장은 없습니다. 데이터베이스는 별도의 정렬 조건이 지정되지 않은 경우 특정 순서를 보장하지 않습니다.
ORDER BY는 이러한 조회 결과를 특정 컬럼을 기준으로 정렬하는 역할을 합니다. 기본적으로 오름차순으로 정렬되며, 숫자는 작은 값에서 큰 값으로, 문자열은 일반적으로 사전식 순서로, 날짜는 과거에서 최근 순서로 정렬됩니다.
예를 들어 회원 테이블에서 회원의 이름과 나이를 조회하면서 나이가 적은 회원부터 확인하려면 다음과 같이 작성할 수 있습니다.
SELECT name, age
FROM member
ORDER BY age;
위 쿼리는 member 테이블에서 name과 age를 조회한 뒤 age 컬럼을 기준으로 오름차순 정렬합니다.
ORDER BY는 일반적으로 SELECT 문장의 마지막 부분에 작성합니다. WHERE를 함께 사용하는 경우에는 조건에 맞는 데이터를 먼저 선택한 다음 ORDER BY를 이용하여 조회 결과를 정렬합니다.
SELECT name, age
FROM member
WHERE age >= 20
ORDER BY age;
이 경우 먼저 20세 이상인 회원을 찾고, 그 결과를 나이가 적은 순서대로 정렬합니다.
ASC와 DESC의 차이
ORDER BY에는 정렬 방향을 지정할 수 있습니다. 대표적으로 ASC와 DESC를 사용합니다.
ASC는 오름차순을 의미합니다. 숫자는 작은 값에서 큰 값으로 정렬하고, 날짜는 오래된 날짜에서 최근 날짜 순서로 정렬합니다. 문자열의 경우 일반적으로 사전식 순서에 따라 정렬합니다.
SELECT name, age
FROM member
ORDER BY age ASC;
ASC는 ORDER BY의 기본 정렬 방향이기 때문에 생략할 수도 있습니다.
SELECT name, age
FROM member
ORDER BY age;
두 쿼리는 같은 방식으로 정렬됩니다.
반대로 DESC는 내림차순을 의미합니다. 숫자는 큰 값에서 작은 값으로, 날짜는 최근 날짜에서 오래된 날짜 순서로 정렬합니다.
SELECT name, age
FROM member
ORDER BY age DESC;
쇼핑몰에서 가격이 높은 상품부터 보여주거나 게시판에서 최근 작성된 글부터 보여주는 경우에는 DESC를 사용할 수 있습니다.
SELECT title, created_at
FROM board
ORDER BY created_at DESC;
이처럼 ORDER BY는 실제 서비스에서 매우 자주 사용되는 구문입니다. 특히 게시판, 상품 목록, 회원 목록처럼 사용자에게 데이터를 목록 형태로 보여주는 기능에서는 정렬 조건이 중요한 역할을 합니다.
여러 컬럼을 기준으로 정렬하기
ORDER BY는 하나의 컬럼만 기준으로 정렬할 수 있는 것이 아니라 여러 컬럼을 함께 사용할 수도 있습니다. 여러 컬럼을 지정하면 먼저 작성된 컬럼을 우선적으로 정렬하고, 해당 컬럼의 값이 같은 데이터끼리 다음 컬럼을 기준으로 다시 정렬합니다.
예를 들어 회원을 나이순으로 정렬하면서 같은 나이의 회원은 이름순으로 정렬하려면 다음과 같이 작성할 수 있습니다.
SELECT name, age
FROM member
ORDER BY age ASC, name ASC;
먼저 나이를 기준으로 오름차순 정렬하고, 나이가 같은 회원이 여러 명이라면 그 안에서 이름을 기준으로 다시 오름차순 정렬합니다.
각 컬럼마다 정렬 방향도 다르게 지정할 수 있습니다.
SELECT name, age
FROM member
ORDER BY age ASC, name DESC;
이 경우 나이는 어린 사람부터 정렬하지만, 같은 나이의 회원끼리는 이름을 내림차순으로 정렬합니다.
ORDER BY를 사용할 때 중요한 점은 데이터를 저장하는 순서를 변경하는 것이 아니라 조회 결과가 표시되는 순서를 변경한다는 것입니다. 따라서 ORDER BY를 사용했다고 해서 테이블 내부의 데이터가 영구적으로 재배치되는 것은 아닙니다.
또한 WHERE와 ORDER BY를 함께 사용할 때는 두 구문의 역할을 구분하는 것이 중요합니다. WHERE는 어떤 데이터를 조회할 것인지 결정하고, ORDER BY는 조회된 데이터를 어떤 순서로 보여줄 것인지 결정합니다. 예를 들어 특정 조건에 맞는 상품만 가져온 뒤 가격순으로 정렬하는 식으로 두 구문을 함께 사용할 수 있습니다.
SELECT product_name, price
FROM product
WHERE price >= 10000
ORDER BY price DESC;
위 쿼리는 가격이 10,000원 이상인 상품만 조회한 다음 가격이 높은 상품부터 정렬합니다.
이처럼 SQL에서는 데이터를 선택하는 조건과 정렬하는 기준을 각각 구분하여 작성하는 것이 중요합니다. ORDER BY는 조회 결과를 사용자가 확인하기 편한 형태로 정리하는 데 사용되며, 다음 단계에서 배우게 될 GROUP BY와도 목적이 다릅니다. GROUP BY가 같은 값을 가진 데이터를 하나의 그룹으로 묶는 기능이라면, ORDER BY는 조회된 결과의 표시 순서를 정하는 기능입니다.
결국 ORDER BY는 데이터베이스에 저장된 데이터를 원하는 기준에 맞춰 정렬하여 보여주기 위한 SQL 구문입니다. ASC와 DESC를 이용하여 오름차순과 내림차순을 지정할 수 있으며, 여러 컬럼을 함께 사용하면 보다 세부적인 정렬 기준을 만들 수 있습니다. 실제 데이터 조회에서는 SELECT와 WHERE와 함께 사용하는 경우가 많기 때문에 각각의 역할을 구분하여 이해하는 것이 중요합니다.