뷰(View) 란?
뷰는 데이터베이스 개체 중 하나로, 테이블처럼 데이터를 가지고 있지는 않지만 SELECT 문으로 만들어져 있기 때문에 뷰에 접근하면 SELECT가 실행되고 그 결과를 볼 수 있다. 쉽게 '가상의 테이블'이라고 표현할 수 있다.
뷰를 사용하는 이유
- 뷰를 만들면 테이블과 동일하게 접근이 가능한데 굳이 뷰를 사용하는 이유 중 하나는 보안이라고 말할 수 있다. 개인정보 등 중요한 정보를 제외하고 뷰를 만들면 접근하는 데이터에 권한을 제한할 수 있다.
- 또한, 복잡하고 자주 사용하는 SELECT 쿼리를 뷰로 만들어두면 보다 간결한 쿼리를 작성할 수 있다.
뷰 생성
CREATE VIEW v_memberbuy
AS
SELECT B.mem_id, M.mem_name, B.prod_name, M.addr, CONCAT(M.phone1, M.phone2) '연락처'
FROM buy B
INNER JOIN member M ON B.mem_id = M.mem_id;
뷰 사용
SELECT 문이랑 동일하게 사용하면 되고, FROM 절에는 뷰 이름을 쓰면 된다.
SELECT * FROM V_memberbuy;

뷰 수정
뷰 수정 시에는 ALTER VIEW ~ AS ~ 로 작성하면 되고, 컬럼 뒤에 ' ' (작은따옴표), " " (큰 따옴표), AS ' ', AS " " 를 사용해 ALIAS를 적용할 수 있다. 뷰에서 ALIAS가 적용된 컬럼을 조회하고자 할 때에는 ` `를 사용하면 된다.
ALTER VIEW v_memberbuy
AS
SELECT B.mem_id '회원 아이디'
, M.mem_name '회원 이름'
, B.prod_name '제품 이름'
, M.addr '주소'
, CONCAT(M.phone1, M.phone2) '연락처'
FROM buy B
INNER JOIN member M ON B.mem_id = M.mem_id;

뷰 정보 확인
아래 쿼리를 사용하여 뷰의 정보를 확인할 수 있는데, 기존 테이블의 특정 컬럼이 PK(Primary Key)였어도 뷰 정보에서는 Key로 표기 되지 않는다.
DESCRIBE v_memberbuy;

뷰 삭제
DROP VIEW v_memberbuy;
* 뷰를 통한 데이터 입력/수정/삭제
뷰에도 데이터 입력이 가능하나, 기존 테이블에 NOT NULL 컬럼이 있는데 해당 컬럼이 뷰에 존재하지 않다거나 하는 이유로 데이터 입력이 안되는 케이스가 발생할 수도 있다. 뷰를 통해 데이터를 입력/수정/삭제하는 것은 권장하는 방법은 아니다.
'개발 > SQL' 카테고리의 다른 글
[MySQL] 트리거 (0) | 2022.10.02 |
---|---|
[MySQL] INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN (0) | 2022.09.20 |
[MySQL] 데이터 형식(정수형, 문자형, 실수형, 날짜형) (0) | 2022.09.19 |
[MySQL] AUTO_INCREMENT 사용하기 (0) | 2022.09.19 |
[MySQL] 데이터 조회 (ORDER BY, DISTINCT, GROUP BY, LIMIT) (1) | 2022.09.19 |