Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 ORDER BY 절을 활용해 뷰(View)를 생성하는 방법

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를 다시 실행하여 뷰를 덮어쓰면 됩니다.