본문 바로가기

Languages/SQL

[SQL] 9. 정렬 - ORDER BY

728x90
반응형

0. ORDER BY

SELECT 명령의 ORDER BY 구를 사용하여 검색 결과의 행 순서를 바꿀 수 있다. 이번 장에서는 정렬에 대해 배워본다. 기본 문법은 다음과 같다. 이번 장에서는 정렬에 대

SELCET 열명 FORM 테이블명 WHERE 조건식 ORDER BY 열명

SELECT 명령에 ORDER BY 구를 지정하면 검색 결과의 행 순서를 바꿀 수 있다. ORDER BY 구를 지정하지 않을 경우에는 데이터베이스 내부에 저장된 순서로 반환된다. 언제나 정해진 순서로 결괏값을 얻기 위해서는 ORDER BY 구를 지정해야 한다. 

 

 

1. ORDER BY로 검색 결과 정렬하기

SELECT 명령의 ORDER BY 구로 정렬하고 싶은 열을 지정한다. 지정된 열의 값에 따라 행 순서가 변경된다. 이때 ORDER BY 구는 WHERE 구 뒤에 지정한다. 검색 조건이 필요 없는 경우에는 WHERE 구를 생략하는데 이때 ORDER BY 구는 FROM 구의 뒤에 지정한다. 

SELCET 열명 FORM 테이블명 ORDER BY 열명

age로 정렬
address로 정렬

 

2. ORDER BY DESC로 내림차순으로 정렬하기

ORDER BY 구에 지정한 열의 값에 따라 행의 순서가 바뀐다는 것을 알았다. 앞선 예제에서는 오름차순으로 정렬하였는데 이와 반대로 내림차순으로도 정렬이 가능하다. 열명 뒤에 DESC를 붙여 내림차순으로 지정할 수 있다.

SELECT 열명 FROM 테이블명 ORDER BY 열명 DESC

열명 뒤에 생략시 자동으로 오름차순으로 지정되며 ASC를 붙여서 오름차순으로 지정할 수도 있다.

SELECT 열명 FROM 테이블명 ORDER BY 열명 ASC

DESC는 하강, ASC는 상승의 약자이다.

age를 기준으로 내림차순 정렬

 

 

3. 대소관계

ORDER BY로 정렬할 때는 값의 대소 관계가 중요하다. 수치형 데이터라면 대소관계는 숫자의 크기로 판별하므로 이해하기 쉽다. 날짜시간형 데이터도 마찬가지로 숫자 크기로 판별한다. 

 

문자열형 데이터의 경우 자모음 배열 순서를 기준으로 하며 알파벳이 한글보다 우선이고, 한글에서는 자음이 모음보다 우선이다. 즉 문자열형 데이터끼리는 사전식 순서에 의해 결정된다.

 

 

사전식 순서에서 주의할 점

수치형과 문자열형은 대소관계 계산 방법이 서로 다르다. 수치형은 수치의 대소 관계로, 문자열형은 사전식 순서로 비교한다. 다음 테이블을 보자.

a열은 문자열형이며 b열은 수치형이다. 보기에 각 행은 동일한 값으로 지정되어 있다. a열을 기준으로 오름차순 정렬을 해보면 다음과 같다. 

예상과는 다른 결과가 보인다. 이는 a열이 문자열형이기 때문에 숫자 간의 크기가 아닌 사전식 순서로 정렬했기 때문이다. 이처럼 같은 숫자여도 수치형인지 문자열형인지에 따라 정렬 결과가 다르다. 

 

 

4. ORDER BY는 테이블에 영향을 주지 않는다.

ORDER BY를 이용해 행 순서를 바꿀 수 있다. 하지만 이는 어디까지나 서버에서 클라이언트로 행 순서를 바꾸어 결과를 반환하는 것뿐 저장장치에 저장된 데이터의 행 순서를 변경하는 것은 아니다. SELECT 문법은 데이터를 검색하는 명령으로 참조만 할 뿐 변경하지는 않는다. 

728x90
반응형

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

[SQL] 11. 결과 행 제한하기 - LIMIT  (0) 2021.06.22
[SQL] 10. 복수의 열을 지정해 정렬하기  (0) 2021.05.18
[SQL] 8. 패턴 매칭에 의한 검색  (0) 2021.04.12
[SQL] 7. 여러가지 조건  (0) 2021.03.15
[SQL] 6. 검색 조건  (0) 2021.03.10