뷰(View)란?


뷰(View)란 데이터베이스에 존재하는 일종의 가상 테이블을 말합니다.

이러한 뷰를 이용하여 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않습니다.

즉, 우리가 여러 테이블을 번거롭게 들러서 확인을 해야 할 때 혹은 SELECT 문을 겹겹이 사용해서 어려운 쿼리문으로 조회를 수행해야 할 때 이러한 번거로움을 줄여주는 것이 바로 뷰(View) 입니다.


단, 유의해야 할 점은 MySQL에서 뷰는 단지 다른 테이블이나 다른 뷰에 있는 데이터를 보여주는 역할만을 수행합니다. 이름이 그래서 뷰(View)인가 봅니다. 뷰는 마치 하나의 테이블인 것처럼 보여준다는 장점이 있습니다.





 

 뷰의 특징


 

 뷰의 장점


MySQL에서의 뷰의 장점은 다음과 같습니다.


1. 특정 사용자에게 테이블 전체가 아닌 필요한 필드만 보여줄 수 있음

2. 복잡한 쿼리를 단순화해서 사용할 수 있음

3. 위와 같이 사용한 쿼리를 재사용할 수 있음


 

 뷰의 단점


단, 편리하지만 단점 또한 있습니다.


1. 한 번 정의된 뷰는 변경이 불가능함

2. 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐

3. 뷰는 자신만의 인덱스를 가질 수 없음


위와 같은 특징을 유의하여 뷰를 생성하고 사용해보도록 합시다.





 

 뷰 생성 예제


VIEW는 마치 테이블을 만들듯 생성할 수 있습니다. 따라서 CREATE 문을 사용하여 생성해보도록 합시다.

MySQL에서 VIEW를 생성하는 예제는 다음과 같습니다.


 

 단일 테이블의 필요한 필드만 조회하는 뷰 명령어

-- VIEW 생성 명령어
CREATE VIEW [view_name] AS \
SELECT [field_name_1], [field_name_2] ... \
FROM [table_name] \
WHERE [조건];


위의 명령에서는 하나의 테이블에서 필요한 필드의 내용만 가져오기 위한 명령어를 작성해보았습니다.

이는 테이블이 하나밖에 없기 때문입니다.



 

 여러 테이블의 필요한 필드를 조회하는 뷰 명령어


만약 여러분이 여러 테이블의 내용을 섞어서 보고싶다면 다음과 같은 방법을 사용해보도록 합시다.


-- 여러 테이블을 조회하는 VIEW 생성 명령어
CREATE VIEW [view_name] AS \
SELECT a.[field_name_1], b.[field_name_2] \
FROM [table_name_1] AS a, [table_name_2] AS b \
WHERE [조건];


위의 명령어는 table_name_1과 table_name_2의 두 테이블에서 각각 field_name_1과 field_name_2를 가져오는 명령어입니다.

field_name_1은 table_name_1에 있는 필드이고, field_name_2는 마찬가지로 table_name_2에 있는 필드입니다.

여기서 [조건]에 적절한 조건을 넣어줘야 합니다.


예를들면..

- table_name_1의 어떤 필드와 table_name_2의 어떤 필드의 값이 같은 것을 조회한다.

- table_name_1의 어떤 필드의 특정 값을 조회한다.

등이 있겠습니다.


실행 결과는 다음과 같이 나타나게 됩니다.

Field_name_1

Field_name_2

table_name_1에 있는 field_name_1의 값 

table_name_2에 있는 field_name_2의 값 

 ...

... 






 

 뷰 대체 예제


뷰 대체란 기존에 생성했던 뷰를 다시 새로운 뷰로 대체한다는 뜻입니다.

뷰는 한 번 생성하면 변경이 불가능하기 때문에 새로운 뷰로 대체하는 것으로 뷰에 설정한 필드를 대체할 수 있습니다.


 

 뷰 대체 명령어


-- 뷰 대체 명령어
-- 기존의 view_name 이라는 VIEW를 새로운 필드로 설정해줄 수 있음
CREATE OR REPLACE VIEW [view_name] AS \
SELECT [field_name_1], [field_name_2] AS [new_field_name] \
FROM [table_name];


만약 위와 같이 뷰를 대체하게 되면, [field_name_2]라는 이름을 가진 필드가 [new_field_name]이라는 이름으로 대체됩니다.






 

 뷰 사용 예제


생성한 뷰는 일반적인 SELECT 명령어로 사용할 수 있습니다.


-- 생성된 뷰 조회(뷰 이름 : view_name)
SELECT * FROM view_name;


위와 같이 생성된 뷰를 전체 조회하게 되면 원하는 테이블의 원하는 필드 값만 볼 수 있습니다.



+ Recent posts