데이터베이스 - 정렬

정렬


데이터는 기본적으로 입력된 순서에 의해서 저장된다. 따라서 이를 원하는 순서에 따라 저장해주기 위해서는 order by를 사용하여 정렬해야 한다.

order by
데이터는 시간 순서로 정렬된다. 이를 우리가 원하는대로 정렬해주기 위해서는 order by를 사용한다.

asc 오름차순 - default
desc 내림차순

hiredate로 오름차순 정렬을 해보겠다. asc는 기본값이기 때문에 안 넣어도 된다.

이번엔 똑같은 테이블을 내림차순으로 정렬해보자. 이 때 내림차순을 위해 desc를 넣는다.

하나의 테이블을 출력해보겠다. 이 때 연봉을 넣기 위해서 sal*12를 가져온다.

그런데 sal*12의 경우 우리가 연봉 정보인지 알 수 없기 때문에 이를 연봉으로 바꿔주자.

이 경우, 기존의 테이블에는 연봉 칼럼이 없는데 어떻게 정렬을 시켜줄 수 있을까?

이 때도 똑같이 order by로 가능하다. 이미 이를 연봉으로 선언하면 서버가 이를 인식하여 적용시켜준다.

뿐만 아니라 칼럼의 순서를 이용해서도 정렬할 수 있다.

“”는 문자열 그대로 출력
‘’는 소문자를 대문자로 출력 - 대문자가 기본값으로 되어 있다.



컬럼을 동시에 정렬시키기

order by a, b, c;를 이용하자. 이 경우 순서대로 적용시키는데 동순일 경우 뒤에 나오는 칼럼을 이용하여 정렬한다.
부서별로 정렬하고, 직책순으로 다시 정렬해보도록 하자.
order by에 앞부분에 부서번호를 넣고, 뒷 부분에 직책을 넣으면 이렇게 부서별 직책별 정렬이 된다.

사원 테이블의 사번, 사원명, 입사일, 업무, 급여를 급여가 높은 순으로 정렬하고, 급여가
같으면 입사일이 빠른 사원으로 정렬하시오.
급여의 경우 높은 순이기 때문에 내림차순정렬, 입사일 경우에는 오름차순정렬로 한다. 따라서 sal desc를 넣어준다.


댓글

이 블로그의 인기 게시물

데이터베이스 PL/SQL - 배열과 테이블

데이터베이스 PL/SQL 변수선언

데이터베이스 PL/SQL 제어문 - 반복문