본문 바로가기
SQL

SQL - 뷰(VIEW)

by hyeon1016 2024. 11. 7.

뷰(VIEW)

뷰는 데이터베이스 객체중 하나로 테이블 처럼 데이터를 가지고 있지 않다. 뷰는 SELECT문으로 만들어져 있기 때문에 뷰에 접근하는 순간 바로 SELECT문이 실행된다.

뷰는 단순 뷰와 복합 뷰로 나뉜다.

  • 단순 뷰 : 하나의 테이블
  • 복합 뷰 : 두 개 이상의 테이블(JOIN)

뷰의 기본 생성

DB, 테이블을 생성하는 방법과 비슷하게 생성할 수 있다. AS절 다음에 SELECT문을 작성한다.

CREATE VIEW 뷰_이름
AS
    SELECT * FROM 테이블;
    
    
SELECT * FROM 뷰_이름;

 

뷰 덮어씌우기

기존에 생성된 뷰를 덮어씌우는 데 사용된다.

CREATE OR REPLACE VIEW 뷰_이름
AS
	SELECT 컬럼1, 컬럼2 FROM 테이블;

 

뷰를 사용하는 이유

보안에 도움이 된다. 사용자에게 보여줄 필요가 없는 중요한 정보(PK, 개인정보)는 빼고

필요한 정보만 보여줄 수 있다.

 

백틱

별칭을 사용할 때 중간에 띄어쓰기나 특수문자가 포함된 경우 따옴표가 아닌 (`) 백틱으로 묶어줘야 한다.

CREATE VIEW 뷰_이름
AS
    SELECT member AS `member column` FROM 테이블;

 

뷰의 수정

ALTER VIEW 구문을 사용해 뷰를 수정할 수 있다.

ALTER VIEW v_viewtest1
AS
    SELECT B.mem_id AS '회원 아이디', M.mem_name AS '회원 이름', B.prod_name AS '제품 이름',
        CONCAT(M.phone1, M.phone2) AS '연락처'
    FROM buy B
        INNER JOIN member M
        ON B.mem_id = M.mem_id;

SELECT DISTINCT `회원 아이디`, `회원 이름` FROM v_viewtest1; ==> 백틱 사용

 

뷰의 삭제

DROP VIEW 구문을 사용해 뷰를 삭제할 수 있다.

DROP VIEW 뷰_이름;

 

뷰의 정보 확인

DISCRIBE / DESC 문으로 기존 뷰의 정보를 확인할 수 있다.

* PK와 같은 정보는 확인되지 않는다.

DESCRIBE 뷰_이름;

 

SHOW CREATE VIEW 문으로 뷰의 소스 코드를 확인할 수 있다.

SHOW CREATE VIEW 뷰_이름;

 

뷰를 통한 데이터의 수정/삭제

일반적으로 뷰를 통해 데이터를 수정, 삭제하는 것은 테이블의 정보를 확인할 수 없기 때문에 힘들다.

뷰를 통해 데이터를 수정, 삭제하는 경우 해당 데이터가 없거나 제약조건에 의해 문제가 발생해도 오류코드가 발생하지 않는다.

 

뷰를 통한 데이터의 입력

뷰를 통해 데이터를 입력할 때 해당 컬럼의 제약 조건에 맞지 않는다면 입력 완료 코드가 확인되어도 SELECT로 확인했을 때 테이블에서 확인되지 않는다.

테이블의 컬럼과 동일한 제약 조건을 뷰에서 지정해주면 잘못된 데이터를 뷰를 통해 입력했을 때 오류 코드가 출력된다.

WITH CHECK OPTION 예약어를 사용하여 제약 조건을 추가할 수 있다.

ALTER VIEW 뷰_이름
AS
    SELECT * FROM member WHERE height >=167 
    	WITH CHECK OPTION;

 

'SQL' 카테고리의 다른 글

SQL - 프로그래밍  (0) 2024.11.08
SQL - 제약조건  (1) 2024.11.07
SQL - JOIN  (0) 2024.11.07
SQL - 데이터의 형식  (0) 2024.11.06
SQL - 기본 문법(데이터 변경)  (0) 2024.11.06