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

MySQL 뷰(View)의 값을 업데이트하는 방법 – UPDATE 문 활용 가이드

MySQL에서 UPDATE 문을 사용하면 테이블의 데이터를 수정할 수 있습니다. 그렇다면 뷰(View)는 어떨까요? 결론부터 말하면, MySQL 뷰도 일반 테이블과 동일한 방식으로 UPDATE 문을 사용해 값을 변경할 수 있습니다.

뷰 업데이트의 기본 원리

뷰는 실제 데이터를 저장하지 않고 기본 테이블(Base Table)의 데이터를 참조하는 가상 테이블입니다. 따라서 뷰에 대해 UPDATE 문을 실행하면, 실제로는 해당 뷰가 참조하는 기본 테이블의 값이 변경됩니다.

UPDATE 문의 문법은 테이블을 업데이트할 때와 완전히 동일합니다. 유일한 차이점은 테이블 이름 자리에 뷰 이름을 작성한다는 점입니다.

UPDATE 뷰이름 SET 컬럼 = 새로운값 WHERE 조건;

실습 예제: 'Info' 뷰 업데이트하기

개념을 이해하기 위해 'Info'라는 이름의 뷰에 다음과 같은 데이터가 있다고 가정해 보겠습니다.

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)

위 데이터에서 'Ram' 행의 Id 값이 NULL로 되어 있습니다. 이 값을 130으로 변경하고 싶다면, 아래와 같이 뷰를 대상으로 UPDATE 문을 실행하면 됩니다.

mysql> Update info set id = 130 where Name = 'Ram';
Query OK, 1 row affected (0.88 sec)

업데이트 결과 확인

UPDATE 문 실행 후 다시 뷰를 조회하면 값이 정상적으로 변경된 것을 확인할 수 있습니다.

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

'Ram' 행의 Id가 NULL에서 130으로 성공적으로 업데이트되었습니다. 이처럼 뷰를 통해 데이터를 수정하면 기본 테이블에도 그 변경 사항이 그대로 반영됩니다.

주의사항: 업데이트 가능한 뷰의 조건

모든 뷰가 업데이트 가능한 것은 아닙니다. 뷰를 통해 데이터를 수정하려면 다음 조건을 충족해야 합니다.

  • 뷰가 단일 테이블을 기반으로 생성되어야 합니다.
  • GROUP BY, HAVING, DISTINCT, 집계 함수(SUM, COUNT 등)가 포함되지 않아야 합니다.
  • UNION 등으로 여러 쿼리 결과를 합친 형태가 아니어야 합니다.

이러한 조건을 만족하지 않는 복잡한 뷰는 읽기 전용으로만 사용해야 하며, 데이터 수정은 반드시 기본 테이블에서 직접 수행해야 합니다.