Introduction

SELECT를 통해서 가져온 데이터에 순서가 필요할 경우, ORDER BY 를 사용 해서 정렬시켜 가져 올 수 있는데, 이번 장에서 이를 설명한다.

Content

SELECT 문을 사용하여 데이터를 가져 올 때, 정렬된 상태로 가져 오기 위해선 ORDER BY 절을 사용 한다.

어떻게 ORDER BY 를 사용 하는가?

ORDER BY 절은 어떤 열로 정렬을 할 것인지 정해주어야만 한다.

예) SELECT prod_name FROM Products ORDER BY prod_name;


이 때 주의 해야 할 것이 있는가?

ORDER BY 절은 SELECT 절에서 제일 마지막에 위치해야 하며, ORDER BY 사용시 SELECT 절에서 가져올 데이터로만 정렬하지는 않는다. 가져오지 않는 데이터로 정렬하여 가져 올 수 있다.

그렇다면, 여러 열을 어떻게 정렬 하는가?

ORDER BY 절 뒤에 열 이름을 콤마(,)로 구분 하면 된다. 예를 들어, 생산자 테이블에서, 생산자 이름으로 정렬을 하고, 물품의 가격으로 정렬을 하고자 한다면, 다음과 같다.

예) SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name;


여기서 주의 해야 할 점이 있는가?

정렬 시키는 열의 기입 순서에 따라서, 결과가 다르게 나올 수 있다. 이는 각 열을 정렬 할 때, 어떤 열을 먼저 정렬하는야로 결정 된다. 즉, ORDER BY prod_price, prod_name 과 ORDER BY prod_name, prod_price 는 다른 결과를 낸다.

규칙은 ORDER BY 절 순으로 먼저 정렬을 하는 것이다. 바로 위의 그림에서 처럼 가격부터 정렬하고, 같은 가격이 있다면, 이름으로 다시 정렬 시키는 것이다.

여기서 Tip으로 한가지 더 소개 할 수 있는데 위에서 계속 반복되는 열 이름이 귀찮을 것이다. 이때 ORDER BY 뒤에 숫자로 표시해도 된다. 이 숫자는 SELECT 뒤에 기입된 열 위치이다.

예) SELECT prod_id, prod_price, prod_name FROM Products ORDER BY 2, 3;


단점이 있다면, SELECT 열에 기입되지 않은 열로 정렬 하려고 할 땐, 불가능하다. 왜냐하면, 상대 위치를 알 수 없기 때문이다.

정렬 방향을 지정 할 수 있는가?

가격을 낮은 순으로 정렬했는데 높은 순으로 정렬 한다든지, 문자를 높은 순으로 정렬 한다든지 정렬 할 수 있는가?. 물론 가능하다. 기본적으로 낮은 순 정렬(올림차순)이다. 이를 높은 순 정렬로 바꾸고 싶다면 ORDER BY 열 다음에 DESC를 기입하면 된다.

예) SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC;


여기서 잠깐,

오름차 순 정렬, 내림차 순 정렬 이 구분이 가지 않는 경우가 종종 있다. 오름차순은 낮은 것에서 높은것 순을 말하며, 내림차 순 정렬은 높은 것에서 낮은 것 순을 뜻한다. 나는 햇갈려서 낮은 순, 높은 순 이라고 표현하며, 낮은 것 부터는 낮은 순, 높은 것 부터는 높은 순이라고 한다. 숫자는 그냥 알 수 있으나, 문자의 경우 A 가 낮고 Z가 높다.

여러 열을 낮은 순 정렬과 높은 순 정렬로 정렬 할 수 있는가?

가능하다, 기본적으로 낮은 순 정렬이기 때문에 높은 순으로 정렬 할 열 이름 뒤에 DESC를 일일이 추가해 주면 된다. 물론 이때도 콤마(,)로 구분한다.

예) SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC, prod_name;


주의 해야 할 점은 없는가?

영문의 경우 대소문자란 개념이 있기 때문에 대소문자로 정렬하려고 시도 할 수 있을 것이다. 하지만 기본적으론 대소문자까지 포함하여 정렬 할 수 없다. 왜냐하면 사전식 정렬이기 때문이다. 꼭 대소문자까지 포함하여 정렬하고 싶다면, 관련 DB문서를 보며, 설정해 주어야 한다.

Digression

난 내림차순, 올림차순이 너무 햇갈린다. 그래서 낮은 순, 높은 순, 이라고 한다.

저작자 표시
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요

  1. Favicon of http://www.msn.com James 2011.01.02 07:38 신고  Addr  Edit/Del  Reply

    Great post man!