Oracle/SQL2021. 6. 16. 10:08

ORDER BY

 

RECORD가 테이블에 저장될 때는 순서가 정해져 있지 않다.

 

입력한 순서대로 저장이 된다고 생각하는 경우도 있지만 항상 그런 것도 아니다.

 

우리가 만든 TEMP에 들어있는 자료를 조건절 없이 SELECT 해보면 INSERT 문장이 실행된 순서대로 불려 나오게 된다.

 

이런 경우는 자료의 양이 적어서 DB 상의 동일 BLOCK 상에 차곡차곡 쌓이거나,

삭제나 변경이 없어 자료가 운 좋게 입력 순서대로 쌓여있는 경우이다.

 

이런 상태에서 자료의 양이 많아지고 삭제가 일어나고

삭제된 자료가 다시 들어가고 하는 경우가 발생하다 보면 정말 입력한 순서도 아니고

그렇다고 특정 컬럼 순서도 아닌 말 그대로 무작위로 자료가 저장되게 된다.

 

참고로 자료가 DB의 BLOCK 상에 쌓이는 원리는 테이블 CREATE 시 지정하는

PCTFREE와 PCTUSED에 의해 결정된다.

 

이렇게 무순서로 저장된 자료를 특정한 순서에 맞게 보고자 할 때 사용하는 것이 ORDER BY이다.

 

예1)

 

SELECT EMP_ID, EMP_NAME

FROM TEMP

ORDER BY EMP_ID;

 

=> EMP_ID 컬럼을 기준으로 오름차순(ASCENDING) 정렬하여 보여준다. 

     만약 내림차순으로 결과를 보고 싶다면 

     ORDER BY EMP_ID DESC 라고 표기하면 된다.

 

예2)

 

SELECT LEV, EMP_ID, EMP_NAME

FROM TEMP

ORDER BY 1,2 DESC;

 

=> TEMP의 자료를 직급 명(LEV)에 ASCENDING하면서 결과 내에서 다시 사번 순으로 DESCENDING하게 하는 ORDER BY 하는 문장이다. 여기서 1이 의미하는 것은 첫번째 컬럼 즉 LEV이며, 2가 의미하는 것은 2번째 컬럼인 EMP_ID이다.

 

참고 : 전문가로 가는 지름길 오라클 실습 P.42

'Oracle > SQL' 카테고리의 다른 글

join  (0) 2021.06.17
연산자  (0) 2021.06.16
OPTIMIZER와 실행계획  (0) 2021.06.15
WHERE  (0) 2021.06.15
CONCATENATION  (0) 2021.06.15
Posted by 자수성가한 부자