MySQL의 ORDER BY 절을 사용하면 결과 집합에 포함된 레코드를 원하는 기준에 따라 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다. 뷰(View)와 함께 ORDER BY 절을 어떻게 활용하는지 이해하기 위해, 다음과 같은 데이터를 가진 기본 테이블 Student_info를 바탕으로 Info라는 이름의 뷰를 생성해 보겠습니다.
mysql> Select * from Student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | +------+---------+------------+------------+ 6 rows in set (0.00 sec)
기본 문법
ORDER BY 절을 포함하여 뷰를 생성하거나 교체하는 기본 문법은 다음과 같습니다.
Create or Replace View view_name AS Select_statements FROM table ORDER BY expression [ASC|DESC]
- view_name: 생성하려는 뷰의 이름입니다.
- Select_statements: 뷰에 포함될 열을 지정하는 SELECT 문입니다.
- expression: 정렬의 기준이 되는 열 또는 표현식입니다.
- [ASC|DESC]: 정렬 방향을 지정합니다. ASC는 오름차순(기본값), DESC는 내림차순을 의미합니다.
예제 1: 이름 기준 오름차순 정렬
아래 예제는 Student_info 테이블에서 데이터를 가져와 Name 열을 기준으로 오름차순(ASC) 정렬된 뷰를 생성하는 과정을 보여줍니다.
mysql> Create or Replace View Info AS select ID, Name, Address , Subject FROM Student_info ORDER BY Name ASC; Query OK, 0 rows affected (0.11 sec) mysql> Select * from info; +------+---------+------------+------------+ | ID | Name | Address | Subject | +------+---------+------------+------------+ | 105 | Gaurav | Chandigarh | Literature | | 133 | Mohan | Delhi | Computers | | 130 | Ram | Jhansi | Computers | | 125 | Raman | Shimla | Computers | | 132 | Shyam | Chandigarh | Economics | | 101 | YashPal | Amritsar | History | +------+---------+------------+------------+ 6 rows in set (0.00 sec)
결과를 확인하면 레코드가 이름의 알파벳 순서(Gaurav → YashPal)대로 정렬되어 있는 것을 볼 수 있습니다.
예제 2: 이름 기준 내림차순 정렬
같은 방식으로 정렬 방향만 DESC(내림차순)로 변경하면, 동일한 뷰를 반대 순서로 재정의할 수 있습니다.
mysql> Create or Replace View Info AS select ID, Name, Address , Subject FROM Student_info ORDER BY Name DESC; Query OK, 0 rows affected (0.10 sec) mysql> Select * from info; +------+---------+------------+------------+ | ID | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 132 | Shyam | Chandigarh | Economics | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | | 133 | Mohan | Delhi | Computers | | 105 | Gaurav | Chandigarh | Literature | +------+---------+------------+------------+ 6 rows in set (0.00 sec)
이번에는 레코드가 이름의 역알파벳 순서(YashPal → Gaurav)대로 정렬되어 출력됩니다.
정리
이처럼 CREATE OR REPLACE VIEW 구문에 ORDER BY 절을 추가하면, 뷰를 조회할 때마다 지정한 열을 기준으로 자동 정렬된 결과를 얻을 수 있습니다. 기존 뷰의 정렬 기준을 변경하고 싶다면 CREATE OR REPLACE VIEW를 다시 실행하여 뷰를 덮어쓰면 됩니다.