3장 가져온 데이터 정렬하기
Last updated
Was this helpful?
Last updated
Was this helpful?
설정 없이 SELECT 문으로 가져온 데이터는 정렬되지 않은 상태이다. 대개 테이블의 순서대로 출력된다. 데이터가 업데이트되거나 삭제되면 DBMS가 공간을 어떻게 사용하느냐에 따라 순서가 바뀔 수 있다. 즉, 정렬을 명시하지 않는다면 정렬 순서를 예상해서는 안된다는 의미이다. 관계형 데이터베이스 설계 이론에서도 정렬이 명시되지 않으면, 검색된 데이터의 순서를 가정해서는 안된다고 명시하고 있단다.
SELECT 문으로 가져온 데이터를 정렬하려면, ORDER BY 을 사용한다. ORDER BY 뒤에는 하나 이상의 열 이름을 적는데, 이를 기준으로 결과를 정렬한다.
ORDER BY 절의 위치
ORDER BY 절을 사용할 때는 이 절이 SELECT 문의 마지막에 와야 한다는 것을 기억하자. 아니면 에러가 발생한다.
두 개 이상의 열로 데이터를 정렬해야 하는 일도 종종 발생한다. 이때 검색과 마찬가지로 열을 콤마로 구분해 사용하면 여러 열로 정렬할 수 있다.
ORDER BY는 열 이름을 사용해 정렬할 수 있고, 열 위치로도 정렬할 수 있다.
이러한 방법의 장점은 열 이름을 다시 적을 필요가 없다는 점이다.
단점은 첫째, 열 이름을 쓰지 않기에 사용자가 잘못된 열을 지정할 가능성이 있다. 둘째, SELECT 절에서 가져오는 열이 변경될 때 ORDER BY 절을 수정하지 않아 잘못 정렬할 수 있다. 셋째, SELECT 절에 없는 열로 정렬하는 것이 불가능하다.
검색하지 않은 열로 정렬하기
이 기법을 사용하면 SELECT 절에서 나열하지 않은 열로 정렬하는 것은 불가능하다. 하지만 필요하다면 하나의 명령문에서 열 이름과 위치를 혼용해 사용해도 된다.
데이터 정렬 순서는 오름차순이 기본값이지만, DESC 키워드를 사용해 내림차순 정렬을 명시할 수 있다.
여러 열을 기준으로 내림차순으로 정렬하려면 어떻게 할까? 각각의 열에 DESC 키워드를 적으면 된다.
오름차순은 ASC인데 기본값이라 굳이 적지 않아도 된다.
SELECT 문의 ORDER BY 절을 이용해 가져온 데이터를 정렬할 수 있다.
ORDER BY 절은 SELECT 문의 마지막에 있어야 한다.
오름차순이 기본값이지만, DESC를 명시해 내림차순으로 정렬할 수 있다.
Custom 테이블에서 모든 고객 이름을 가져오고 그 결과를 내림차순으로 정렬하여 표시하는 SQL 문을 작성하기.
Orders 테이블에서 고객 ID와 주문 번호를 검색해, 결과를 고객 ID로 먼저 정렬하고 최근 주문한 순서대로 정렬하는 SQL 문 작성하기.
Order Items 테이블에서 수량 및 가격을 검색해 가장 수량이 많고, 높은 가격순으로 정렬하는 SQL 문을 작성하라
다음 SQL 문은 무엇이 잘못되었는가?
Vend_name의 콤마, ORDER =>ORDER BY