[MySQL] 뷰(View) 생성 이유 및 뷰 생성,수정,삭제,조회
뷰(View)의 생성 목적
뷰(View)는 관리 측면과 사용성 편의, 유지 보수, 보안 등을 위해서 사용하는 기법이다. 쿼리(Query)가 복잡할 경우 이를 프로그램으로 구현하게 되면 유지보수가 잘 안될 수도 있고, 초급 개발자의 경우 실수를 범할 수 있다. 게다가 쿼리 및 테이블을 공개해야 할 경우 보안 측면에서 문제가 발생할 수 있다.
즉, 뷰는 어떤 하나의 목적으로 사용하는 것이 아니라, 편의성, 보안성, 유지 보수 등의 다양한 이유로 인해서 사용하는 것이라 생각하면 된다. 즉 위 내용을 간단히 정리하자면 아래와 같다.
- 편의성 : 복잡한 쿼리를 단축 시켜 놓기 때문에 개발을 보다 쉽게 진행할 수 있다
- 보안성 : 테이블 명칭과 컬럼 명칭을 숨길 수 있기 때문에 보안성이 뛰어나다
- 유지보수성 : 코드가 단축되기 때문에 유지보수에 유리하다
뷰(View) 생성 방법
CREATE VIEW 뷰명칭 AS
SELECT 필드1, 필드2, ...
FROM 테이블
WHERE 조건
쉽게 생각하면 뷰는 위에 보다시피, Select 쿼리 위에 create view [뷰명칭] as를 넣으면 된다. 그럼 이해를 쉽게 돕기 위해 예제를 참고해 보도록 한다
위 화면은 구조가 간단한 테이블 2개를 유니온 하여 보여주고 있다. 이 유니온으로 완성된 쿼리를 뷰(View)를 사용하여 테이블을 숨기고 보다 심플하게 바꿔보도록 한다.
예제 뷰 생성
create view content_vw as
select title, content, 'CONTENT' as category
from content_tbl
union all
select title, contents as content, 'NEWS' as category
from news_tbl
쿼리에 이상이 없다면 아래와 같이 DbTool에 있는 Views 항목에 View가 만들어진 것을 확인할 수 있다.
생성 결과
생성된 뷰는 언제든지 수정할 수 삭제할 수 있다. 일단 만들어진 뷰를 확인해보면 테이블의 데이터를 기반으로 자동으로 Data Type이 지정된 것을 볼 수 있다. category라는 컬럼은 문자열을 출력하는 컬럼이다보니, 테이블에 없지만 뷰는 자동으로 가장 큰 문자열 크기로 Data Type이 지정되었다.
뷰(View) 조회
만들어진 뷰는 언제든지 테이블처럼 쓸 수 있으며 테이블의 결과를 조회하는 방식과 동일하다.
SELECT 컬럼1, 컬럼2 ... 컬럼n
FROM 뷰이름
WHERE 조건절
뷰(View) 조회 결과
뷰(View) 수정
ALTER VIEW 뷰이름 AS
SELECT 컬럼1, 컬럼2, ...
FROM 테이블
뷰 수정 방식은 CREATE 대신 ALTER만 사용하면 된다.
위 화면은 content_vw에서 category 컬럼을 alter로 제거한 것의 캡쳐 화면이다
category 컬럼이 사라진 것을 확인할 수 있다.
뷰(View) 삭제
뷰를 더이상 사용하지 않을 경우, 아래와 같은 명령어로 삭제할 수 있다.
DROP VIEW 뷰이름
drop view content_vw로 성공적으로 view가 삭제된 화면이다
삭제가 되었는데 위와 같이 select를 날릴 시 SQL Error [1146] [42S02]: (conn=18) Table [뷰이름] doesn't exist 에러가 발생하게 된다.
MySQL 관련 포스팅
[MySQL] group_concat 사용법 모음 (문자열 구분자 묶음)
[MySQL] date_format 설정 (날짜 포맷 변경)