3장 가져온 데이터 정렬하기
데이터 정렬하기
설정 없이 SELECT 문으로 가져온 데이터는 정렬되지 않은 상태이다. 대개 테이블의 순서대로 출력된다. 데이터가 업데이트되거나 삭제되면 DBMS가 공간을 어떻게 사용하느냐에 따라 순서가 바뀔 수 있다. 즉, 정렬을 명시하지 않는다면 정렬 순서를 예상해서는 안된다는 의미이다. 관계형 데이터베이스 설계 이론에서도 정렬이 명시되지 않으면, 검색된 데이터의 순서를 가정해서는 안된다고 명시하고 있단다.
SELECT 문으로 가져온 데이터를 정렬하려면, ORDER BY 을 사용한다. ORDER BY 뒤에는 하나 이상의 열 이름을 적는데, 이를 기준으로 결과를 정렬한다.

여러 개의 열로 정렬하기
두 개 이상의 열로 데이터를 정렬해야 하는 일도 종종 발생한다. 이때 검색과 마찬가지로 열을 콤마로 구분해 사용하면 여러 열로 정렬할 수 있다.

열의 위치로 정렬하기
ORDER BY는 열 이름을 사용해 정렬할 수 있고, 열 위치로도 정렬할 수 있다.

이러한 방법의 장점은 열 이름을 다시 적을 필요가 없다는 점이다.
단점은 첫째, 열 이름을 쓰지 않기에 사용자가 잘못된 열을 지정할 가능성이 있다. 둘째, SELECT 절에서 가져오는 열이 변경될 때 ORDER BY 절을 수정하지 않아 잘못 정렬할 수 있다. 셋째, SELECT 절에 없는 열로 정렬하는 것이 불가능하다.
정렬 순서 지정하기
데이터 정렬 순서는 오름차순이 기본값이지만, DESC 키워드를 사용해 내림차순 정렬을 명시할 수 있다.

여러 열을 기준으로 내림차순으로 정렬하려면 어떻게 할까? 각각의 열에 DESC 키워드를 적으면 된다.

오름차순은 ASC인데 기본값이라 굳이 적지 않아도 된다.
정리하기
SELECT 문의 ORDER BY 절을 이용해 가져온 데이터를 정렬할 수 있다.
ORDER BY 절은 SELECT 문의 마지막에 있어야 한다.
오름차순이 기본값이지만, DESC를 명시해 내림차순으로 정렬할 수 있다.
도전 과제
Custom 테이블에서 모든 고객 이름을 가져오고 그 결과를 내림차순으로 정렬하여 표시하는 SQL 문을 작성하기.

Orders 테이블에서 고객 ID와 주문 번호를 검색해, 결과를 고객 ID로 먼저 정렬하고 최근 주문한 순서대로 정렬하는 SQL 문 작성하기.

Order Items 테이블에서 수량 및 가격을 검색해 가장 수량이 많고, 높은 가격순으로 정렬하는 SQL 문을 작성하라

다음 SQL 문은 무엇이 잘못되었는가?
SELECT Vend_name,
FROM Vendors
ORDER vend_name DESC;
Vend_name의 콤마, ORDER =>ORDER BY
Last updated
Was this helpful?