민둥 개발자의 계발 블로그

[mysql] ORDER BY 절 본문

Study/Database

[mysql] ORDER BY 절

민둥산의 민둥이 2022. 5. 23. 12:19

 안녕하세요 민둥산의 민둥이입니다. 저번에는 SELECT구문을 더 다채롭게 해주는 구문들에 대해서 이야기했었는데요, SELECT 구문을 다채롭게 하는 WHERE 절 외에도 다른 구문이 더 있습니다. 바로 ORDER BY 절!!

 

 ORDER BY 절을 직역하자면 "어느 순서대로~" 라는 뜻인데, 이 말 그대로 SELECT 구문을 사용하여 칼럼들의 값을 출력할 때 무엇을 기준으로 정렬할지를 정할 수 있는 구문입니다. 위치는 SELECT FROM WHERE 절의 뒤에 오게 됩니다.

정렬 기준이 될 수 있는 값들은 컬럼, 표현식, 함수 등이 있고 있습니다.

 

우선 정렬 방식에 대해 설명하기 전에 데이터의 크기에 대한 이해가 필요합니다. 아래의 표에서 보이듯이 오름차순의 경우 크기가 작은 것부터 큰 순으로 정렬되는데 숫자의 경우는 뚜렷하게 알아도 다른 데이터 타입은 헷갈릴 수 있으니 확실하게 보고 가세요! 특히 날짜는 숫자로 보면 최신 날짜가 더 크게 보이기에 더더욱 헷갈릴 수 있으니 주의하세요! 최신 날짜가 오래된 날짜보다 크기가 작습니다. ex) 2022년 1월 13일>2022년 5월 23일

  숫자 문자 날짜
오름차순(사전순)
작은 → 큰
1 → 9 A → Z 이전 → 이후
내림차순
큰 → 작은
9 → 1 Z → A 이후 → 이전

예시

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC;

위의 예시와 같이 입력할 경우 고용 날짜인 hire_date의 레코드를 기준으로 내림차순 값을 보여줍니다. 즉, 고용된 날짜가 최신인 것부터 오래된 날짜 순으로 위에서 아래로 출력 됩니다.

 

출력 결과

+-------------+------------+---------------+------------+

| last_name   | job_id     | department_id | hire_date  |

+-------------+------------+---------------+------------+

| Banda       | SA_REP     |            80 | 2000-04-21 |

| Kumar       | SA_REP     |            80 | 2000-04-21 |

| Ande        | SA_REP     |            80 | 2000-03-24 |

| Markle      | ST_CLERK   |            50 | 2000-03-08 |

| Lee         | SA_REP     |            80 | 2000-02-23 |

| Philtanker  | ST_CLERK   |            50 | 2000-02-06 |

| Geoni       | SH_CLERK   |            50 | 2000-02-03 |

| Zlotkey     | SA_MAN     |            80 | 2000-01-29 |

| Marvins     | SA_REP     |            80 | 2000-01-24 |

| Grant       | SH_CLERK   |            50 | 2000-01-13 |

 

기본 문법

SELECT 컬럼명,컬럼명... FROM 테이블명
[WHERE 조건식]
ORDER BY 컬럼명/표현식/함수 [ASC/DESC];

기본적으로 ORDER BY 절은 WHERE절과 같이 쓸 경우 WHERE절 뒤에 위치합니다. ORDER BY 키워드 뒤에는 정렬의 기준이 되는 값(칼럼, 표현식, 함수 중 1개)를 지정하고 그 뒤에 ASC 또는 DESC 를 적어서 오름차순 또는 내림차순으로 출력방식을 정할 수 있습니다.

 

 여기서 ASC는 Ascending Order = 오름차순의 약자이고 DESC는 Descending ORDER의 약자입니다. DESC키워드 같은 경우는 테이블의 컬럼 배치를 조회하기 위해서도 쓰이는데요, 그때의 DESC는 Describe의 약자이기에 다른 키워드, 다른 용도입니다. 각자 다른 위치에서 쓰이기에 용도를 잘 기억하시고 사용해야 해요! 추가적으로, ASC/DESC 는 옵션으로 사용할 수 있는 값인데 아무것도 쓰지 않으면 기본값(Default)으로 ASC가 적용됩니다.

 

 재미있는 점은 ORDER BY 절을 여러 번 사용할 수 있다는 점인데요, 예시를 들면 데이터 출력을 고용일(hire_date) 기준으로 정렬했을 때 여전히 겹치는 값들이 있을 수도 있습니다(같은 날짜에 입사한 사람들도 있을 수 있으니까요^^). 그럴 경우 추가적으로 2차 정렬, 3차 정렬을 할 수가 있는데 문법은 단순합니다.

SELECT 컬럼1,컬럼2, 컬럼3... FROM 테이블명
[WHERE 조건식]
ORDER BY 정렬할 컬럼1 [ASC/DESC], 정렬할 기준 2[ASC/DESC] ...;

그냥 뒤에 콤마를 붙이고 두 번째 기준, 세 번째 기준을 적어주면 됩니다:) 

반응형
Comments