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

MySQL에서 기존 뷰(View)를 기반으로 새로운 뷰를 만드는 방법

MySQL에서 기존 뷰를 기반으로 새 뷰 만들기

MySQL에서는 이미 존재하는 다른 뷰(View)를 기반으로 새로운 뷰를 생성할 수 있습니다. 방법은 일반 테이블에서 뷰를 만들 때와 동일하게 CREATE VIEW 문을 사용하되, FROM 절에 테이블 이름 대신 기존 뷰 이름을 지정하는 것입니다.

1단계: 기본 뷰 'Info' 생성하기

먼저 예제를 위해 'student_info' 테이블에서 'Info'라는 뷰를 생성하고 그 안에 어떤 데이터가 있는지 확인해 보겠습니다.

mysql> Create view info AS Select Id, Name, Subject FROM student_info;
Query OK, 0 rows affected (0.11 sec)

mysql> Select * from Info;
+------+---------+------------+
| Id | Name | Subject |
+------+---------+------------+
| 101 | YashPal | History |
| 105 | Gaurav | Literature |
| 125 | Raman | Computers |
| NULL | Ram | Computers |
+------+---------+------------+
4 rows in set (0.00 sec)

위 결과에서 확인할 수 있듯이 'Info' 뷰에는 총 4개의 행이 저장되어 있습니다.

2단계: 기존 뷰를 기반으로 'info_less' 뷰 생성하기

이제 앞에서 만든 'Info' 뷰를 데이터 소스로 사용하여, WHERE 절로 조건을 추가한 새로운 뷰 'info_less'를 생성해 보겠습니다.

mysql> Create view info_less AS Select Id, Name, Subject FROM info WHERE id >= 120;
Query OK, 0 rows affected (0.25 sec)

mysql> Select * from info_less;
+------+-------+-----------+
| Id | Name | Subject |
+------+-------+-----------+
| 125 | Raman | Computers |
+------+-------+-----------+
1 row in set (0.03 sec)

'info_less' 뷰는 원본 테이블이 아닌 'Info' 뷰에서 Id가 120 이상인 행만 필터링하여 가져옵니다. 그 결과 4개의 행 중 조건에 맞는 단 하나의 행만 출력된 것을 볼 수 있습니다.

뷰를 기반으로 뷰를 만들 때의 장점

이처럼 뷰 위에 또 다른 뷰를 만들면 다음과 같은 이점이 있습니다.

  • 단계별 추상화: 복잡한 쿼리 로직을 여러 개의 간단한 뷰로 나누어 관리할 수 있습니다.
  • 재사용성 향상: 자주 사용하는 필터링이나 조인 결과를 뷰로 정의해 두면 반복 작업을 줄일 수 있습니다.
  • 가독성 개선: 최종 뷰의 정의가 짧고 명확해져 유지보수가 쉬워집니다.

단, 뷰를 중첩해서 사용할 경우 하위 뷰의 구조가 변경되면 상위 뷰에도 영향을 줄 수 있으므로, 의존 관계를 잘 관리하는 것이 중요합니다.