본문 바로가기
Infra & Security Eng/Database Engineering

ORDER BY절 이용한 정렬(기본 규칙, 정렬 검색, 묶음 검색)

by 엔지니어 E 2026. 1. 27.
반응형

1. 정렬의 기본 규칙 (ORDER BY)

데이터베이스에 저장된 데이터는 기본적으로 순서가 뒤죽박죽이다. 이를 보기 좋게 정렬 하고 싶을 때 문장의 가장 마지막에 ORDER BY를 사용 한다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
SELECT * | [DISTINCT] 컬럼|수식 [AS 별명], ......
FROM 테이블
ORDER BY 컬럼 [ASC |DESC], 컬럼 [ASC |DESC], .....
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

1) ASC(오름차순): 작은 값부터 큰 값 순서 (예: 1, 2, 3... / 가, 나, 다... / 과거→미래)
* 기본값이므로 ASC 혹은 DESC 둘다 생략하면 자동으로 오름차순 정렬된다

2) DESC (내림차순): 큰 값부터 작은 값 순서 (예: 10, 9, 8... / 하, 파, 타... / 최근→과거)
* 회사 대부분은 내림차순 정렬을 많이 쓰므로 ASC 보단 DECS 를 많이 사용 한다 
ex) 급여를 많이 받는 사람순 혹은 성적이 높은 순 등 내림 차순 사용하는 일이 많음

* 1개가 아닌 두개 컬럼으로 정렬 하는 이유는?
앞에 있는 애들(1번째 컬럼)로 정렬을 했는데 정렬 안된 애들만 2번째 컬럼으로 정렬을 해라(2번째컬럼)
ex) 사번으로 정리하고, 쌀로 정리해라 -----> 명령어를 의미없게 잘못 사용한 것: 사번과 급여는 겹칠 일이 없기 때문에 의미 없는 검색임
* 컬럼 순서를 정확히 적어야 된다 

 

2. 정렬 검색

SQL> SELECT eno 사번,ename 이름, sal 급여 ---> 사원번호, 이름, 급여 항목을 가져오겠다, 사번, 이름, 급여는 화면에 출력될 때 보여줄 별명  
2 FROM emp ---> emp 테이블로 부터 데이터를 꺼내오겠다
3 ORDER BY sal DESC; ---> 급여(sal)을 기준으로 정렬한다. 내림차순으로(DESC)
* sal 이 아닌 급여라는 별명으로 명령어를 적어도 됨

SQL> SELECT eno 사번, ename 이름, sal 급여
2 FROM emp
3 ORDER BY 3 DESC;
근데 가급적 이렇게 쓰지 말것, 왜냐하면 만약 컬럼이 100개 라면 순서를 일일히 다 세봐야 해서 비효율적임
SQL> SELECT eno 사번, ename 이름
2 FROM emp
3 ORDER BY sal*12+nvl(comm,0) DESC; ---> SELECT 문에 sal, comm 을 적지 않았기 때문에 화면에는 사번, 이름만 나오게 됨
* 컬럼이 아닌 sal*12+nvl(comm,0) 이런식으로 수식으로도 정렬이 가능함


SQL> SELECT eno 사번, ename 이름, sal 급여, comm 보너스
2 FROM emp
3 ORDER BY sal DESC, comm DESC; ---> 1순위(sal DESC): 먼저 급여가 높은 순서대로 정렬해줘 그다음 2순위(comm DESC): 만약 급여가 똑같은 사람들이 있다면, 그 사람들 사이에서는 보너스가 높은 순서대로 다시 정렬해줘

 

3. 묶음 검색

업무별로 사원의 급여를 검색함
SQL> SELECT job 업무, eno 사번, ename 이름, sal 급여
2 FROM emp
3 ORDER BY 업무; ---> 위에서 설정한 업무(=job) 기준으로 정렬해줘. ASC,DESC 둘 중 아무 것도 설정 안했으므로 기본값인 ASC(오름차순) 으로 정렬됨

부서별로 사원의 급여를 검색함
SQL> SELECT dno 부서번호, eno 사번, ename 이름, sal 급여
2 FROM emp
3 ORDER BY 부서번호, sal DESC; ---> 일단 같은 부서 사람들끼리 묶어서 모아주고, 부서 내에서 급여(sal)가 높은 사람부터 낮은 사람 순서(내림차순) 로 보여줘

정렬 검색과 묶음 검색의  차이점 
정렬 검색:1등부터 꼴등까지의 순서를 한눈에 보여준다(순위 확인)
묶음 검색: 공통된 특징을 가진 사람들끼리 모여 있는 상태를 보여준다

*묶음 검색 ---> 중복이 많은 컬럼이 많이 나옴
💡참고사항

카디널리티: 값의 개수 

* ORDER BY절에서 일반적으로 카디널리티가 낮은 데이터들이 많이 옴