[14일차-1] 뷰
2026. 6. 9. 23:28ㆍKDT/2. MySQL
#뷰 View
- select 문을 저장해둔 가상의 테이블 (자주 사용하는 select 문 결과를 편하게 사용하기 위함)
- 뷰를 사용하는 이유
- 복잡한 SQL 단순화
- 재사용 (자주 쓰는 조회 저장)
- 가독성 (SQL을 보기 쉽게 구성)
- 보안 (특정 컬럼만 공개)
- 데이터를 직접 저장하지 않음 (원본 테이블의 select 결과를 보여주는 가상 테이블. 실제 테이블 x)
ex. member 테이블 데이터를 변경하면 -> view의 결과도 같이 변경
1. 뷰 생성
| create view 뷰이름 as select문 |
-- member 테이블에서 포인트가 100 이상인 userid, name, point를
-- vip_member로 view 생성
create view vip_member as
select userid, name, point from member where point >= 100;
2. 뷰 사용
-- vip_member 뷰 사용
select * from vip_member;
select * from vip_member where point >= 150;
-- 회원주소 뷰(member_address) 조회
-- userid, name, address1 + address2 + addres3 as address
create view member_address as
select userid, name, concat(address1, ' ', address2, ' ', address3) as address from member;
-- 생성한 뷰 확인
select * from member_address;
3. 뷰 수정
- 뷰를 수정하기 위해서는 create on replace로 덮어 씌워야 한다
-- vip_member 뷰에 email을 포함해서 조회
create on replace view vip_member as
select userid, name, point, email from member where point >= 100;
-- 수정한 뷰 확인
select * from vip_member;
4. 뷰 구조 확인
| show create view 뷰이름; |
-- vip_member 뷰의 구조 확인
show create view vip_member;
5. 뷰 목록 확인
- 생성되어 있는 뷰 목록을 확인할 수 있다
SHOW FULL TABLES WHERE Table_type = 'VIEW';
6. join을 사용한 뷰 생성
-- member 테이블의 idx와 orders 테이블의 member_idx가 같은 것으로 두 테이블을 조인해서
-- userid, name, product_name, price, order_date를 조회하는 뷰 생성 (member_order)
create view member_order as
select m.userid, m.name, o.product_name, o.price, o.order_date from member as m
join orders as o on m.idx = o.member_idx;
-- 생성한 뷰 확인
select * from member_order;
'KDT > 2. MySQL' 카테고리의 다른 글
| [13일차] 서브 쿼리, 사용자계정(작성중) (1) | 2026.06.08 |
|---|---|
| [12일차] SQL문 연산자, 정규화 (0) | 2026.06.07 |
| [11일차] MySQL, SQL명령어(DDL, DML) (0) | 2026.06.04 |