# 09강. 정렬 - ORDER BY **`ORDER BY 구`** ``` SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 ``` - `SELECT` 명령에 `ORDER BY` 구를 지정하면 검색 결과의 행 순서를 바꿀 수 있다. - `ORDER BY` 구를 지정하지 않을 경우에는 데이터베이스 내부에 저장된 순서로 반환된다. - 언제나 정해진 순서로 결괏값을 얻기 위해서는 `ORDER BY` 구를 지정해야 한다. --- ## 1. ORDER BY로 검색 결과 정렬하기 - `SELECT` 명령의 `ORDER BY` 구로 정렬하고 싶은 열을 지정하면 지정된 열의 값에 따라 행 순서가 변경된다. - 이때 `ORDER BY` 구는 `WHERE` 구 뒤에 지정한다. **`WHERE 구 뒤에 ORDER BY 구를 지정하는 경우`** `SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명` - 검색 조건이 필요없는 경우에는 `WHERE` 구를 생략하는데 이때 `ORDER BY` 구는 `FROM` 구의 뒤에 지정한다. **`FROM 구 뒤에 ORDER BY 구를 지정하는 경우`** ``` SELECT 열명 FROM 테이블명 ORDER BY 열명 ``` --- ## 2. ORDER BY DESC로 내림차순으로 정렬하기 - `ORDER BY` 구에 지정한 열의 값에 따라 행의 순서가 바뀐다. - 기본적으로는 오름차순으로 정렬된다. - 내림차순으로 정렬할 때는 열명 뒤에 `DESC`를 붙여 지정한다. **`내림차순으로 정렬`** ``` SELECT 열명 FROM 테이블명 ORDER BY 열명 DESC ``` - 오름차순으로 정렬할 때는 내림차순과 달리 생략 가능하며 `ASC`로도 지정할 수 있다. **`오름차순으로 정렬`** ``` SELECT 열명 FROM 테이블명 ORDER BY 열명 ASC ``` - `DESC`는 `descendant(하강)`, `ASC`는 `ascendant(상승)`의 약자이다. ##### DESC로 내림차순 정렬한다! ##### ASC로 오름차순 정렬한다! - `ASC`나 `DESC`로 정렬방법을 지정하지 않은 경우에는 `ASC`로 간주되며, 즉 `ORDER BY`의 기본 정렬방법은 오름차순이다. --- ## 3. 대소관계 - `ORDER BY`로 정렬할 때는 값의 대소관계가 중요하다. - 수치형 데이터라면 대소관계는 숫자의 크기로 판별하므로 이해하기 쉽다. - 날짜시간형 데이터도 수치형 데이터와 마찬가지로 숫자 크기로 판별한다. - 문자열형 데이터의 경우에는 알파벳이나 한글 자모음 배열순서를 사용하면 문자를 차례대로 나열할 수 있다. - 알파벳, 한글 순이며 한글은 자음, 모음 순이다. ##### 문자열형 데이터의 대소관계는 사전식 순서에 의해 결정된다! ### 사전식 순서에서 주의할 점 - 수치형과 문자열은 대소관계 계산 방법이 서로 다르다. - 수치형은 수치형의 대소관계로, 문자열형은 사전식 순서로 비교한다. - 문자열형 열에 숫자 데이터를 넣을 수 있다(숫자도 문자의 일종이므로 저장하는 데 아무런 문제가 되지 않는다). - 하지만 문자열형 열에 숫자를 저장하면 문자로 인식되어 대소관계의 계산 방법이 달라지므로 정렬이나 비교 연산을 할 때는 이 점에 주의해야 한다. ##### 수치형과 문자열형 데이터는 대소관계의 계산 방법이 다르다! --- ## 4. ORDER BY는 테이블에 영향을 주지 않는다. - `ORDER BY`를 이용해 행 순서를 바꿀 수 있다. - 하지만 이는 서버에서 클라이언트로 행 순서를 바꾸어 결과를 반환하는 것뿐, 저장장치에 저장된 데이터의 행 순서를 변경하는 것은 아닙니다. - `SELECT` 명령은 데이터를 검색하는 명령이다. 이는 테이블의 데이터를 참조만 할 뿐이며 변경은 하지 않는다. ---