- 14장 - 뷰2024년 09월 25일
- 31514
- 작성자
- 2024.09.25.:11
데이터베이스를 설계할 때 테이블을 비공개로 유지하고 사용자가 뷰 집합을 통해서만 데이터에 접근할 수 있게 할 수 있다.
-- E-mail 정보를 마스킹하는 과정 create view customer_vw (customer_id, first_name, last_name, email ) as select customer_id, first_name, last_name, concat(substr(email, 1, 2), '*****', substr(email, -4)) email from customer;
뷰는 데이터를 사전 집계하여 데이터베이스에 저장하는 것처럼 보일 수 있는 좋은 방법이다.
미리 조인된 결과를 뷰에 저장하는 방식은 적절하게 활용하면 복잡한 쿼리를 단순화하고 성능을 향상시키는 데 도움이 된다.
하지만 데이터의 갱신 빈도와 성능 요구사항에 따라 일반 뷰와 Materialized View 중 적합한 방식을 선택하는 것이 중요하다.
만약 뷰에 있는 데이터를 일부 수정해야된다면 어떻게 해야할까?
뷰를 생성했던 원시 테이블에서 데이터를 수정하고 다시 뷰를 만들어야할까?
MySQL의 경우 다음 조건이 충족되면 뷰를 업데이트할 수 있다.
- max(), min(), avg() 등의 집계 함수가 사용되지 않았다.
- group by 또는 having 절을 사용하지 않는다.
- select 또는 from 절에 서브쿼리가 없으며 where 절의 서브쿼리는 from 절의 테이블을 참조하지 않는다.
- union, union all 또는 distinct를 사용하지 않는다.
- from 절에는 최소 하나 이상의 테이블 또는 갱신 가능한 뷰가 포함되어야 한다.
- from 절은 테이블이나 뷰가 둘 이상 있는 경우 inner 조인만 사용한다.
따라서 위 예제에서 이메일을 마스킹한 경우, 표현식을 사용했기 때문에 수정할 수 없다.
'Book > Learning SQL' 카테고리의 다른 글
13장 - 인덱스와 제약조건 (0) 2024.09.24 12장 - 트랜잭션 (0) 2024.09.23 9장 - 서브쿼리 (2) 2024.09.20 8장 - 그룹화와 집계 (0) 2024.09.19 6장 - 집합 연산자 (0) 2024.09.12 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)