본문 바로가기
DB/DB 문법

뷰(View)

by oneny 2023. 5. 23.

뷰(View)

  • 테이블은 실제로 데이터를 갖고 있지만, 뷰는 실제 데이터를 갖지 않는다.
    • 뷰 정의(View Definition, SQL 텍스트 파일)만 갖고 있다.
    • 쿼리에서 뷰가 사용되면 DBMS 내부적으로 질의를 재작성(Rewrite)한다.
  • 실제 데이터를 가지고 있지 않지만 테이블의 역할을 수행한다.
    • 가상 테이블(Virtual Table)이라고도 한다.

 

VIEW 생성

CREATE VIEW v_palyer_team AS
SELECT p.player_name, p.back_no, p.team_id, t.team_name
FROM player p INNER JOIN team t
ON p.team_id = t.team_id;

CREATE VIEW 문을 통해 VIEW 생성를 생성할 수 있다.

 

VIEW 확인

SELECT * FROM user_views;

 

생성된 뷰는 테이블과 동일한 형태로 사용 가능

DESC v_player_team;

SELECT * FROM v_player_team;

SELECT player_name, back_no, team_id, team_name
FROM v_player_team
WHERE player_name LIKE '이%';

 

파싱 시점에 DBMS가 내부적으로 뷰 해당 부분을 SQL문으로 재작성

SELECT player_name, back_no, team_id, team_name
FROM (SELECT p.player_name, p.back_no, p.team_id, t.team_name
	FROM player p INNER JOIN team t
	ON p.team_id = t.team_id)
WHERE player_name LIKE '이%';

VIEW를 이용하면 앞서 봤던 서브 쿼리처럼 rewrite된 것을 확인할 수 있다.

따라서 FROM 절에서 사용하는 서브 쿼리를 인라인 뷰라고 하는 것이다.

 

VIEW 제거

DROP VIEW v_player_name;

 

뷰의 장점

독립성

테이블 구조가 변경 시, 뷰만 변경되고 뷰를 사용하는 응용 프로그램은 변경될 필요가 없다.

(예: 앞에서 player와 team 테이블이 변경된 경우 -> v_player_team 뷰가 이에 맞게 변경된다면 응용프로그램은 변경될 필요가 없다.)

 

편리성

복잡한 질의를 뷰로 생성하여 질의의 가독성을 높인다.

 

보안성

민감한 정보(급여정보 등)를 제외하고 새로운 테이블을 만들면 공간 낭비이지만, 뷰를 생성하여 사용자로부터 정보를 보호하고 공간도 절약할 수 있다.

 

 

'DB > DB 문법' 카테고리의 다른 글

!= NULL, <> NULL, IS NOT NULL 차이  (0) 2023.05.19
TCL(Transaction Control Language)  (0) 2023.05.19
쿼리 실행 순서  (1) 2023.05.18
조건식(Conditional Expressons)  (0) 2023.05.18
쿼리 조회 시 *(asterisk)는 정말 지양해야 할까?  (0) 2023.05.18