뷰(view)
select 문을 저장해둔 가상의 테이블
create view 뷰이름 as select문
view를 사용하는 이유
- 복잡한 SQL을 단순화
- 재사용 (자주 쓰는 테이블 조회 저장)
- 가독성 (SQL을 보기 쉽게 구성)
- 보안 (특정 컬럼만 공개) → view로 전달하게되면 개발자는 전체 테이블에 대한 정보를 알 수 없다.
view의 특징
- 테이블을 직접 저장하지 않음 (원본 테이블의 select 결과를 보여주는 가상 테이블)
- member 테이블 데이터 변경 → view 결과도 같이 변경됨
create view vip_member as select userid, name, point from member where point >= 100;
-- 위와 같이 내가 원하는 컬럼을 담은 view를 만들어 놓으면
-- 아래와 같이 view만 호출해서 사용하면 된다.
select * from vip_member;
-- 또한 view는 select처럼 사용도 가능하다
select * from vip_member where point >= 150;
-- 회원 주소 view(member_address) 만들기
-- 들어갈 데이터: userid, name, address1 + address2 + address3 as addresss
-- concat을 통해 먼저 주소를 합쳐준다.
select concat(address1, ' ' , address2, ' ', address3) as address from member;
-- userid, name, address 로 view를 생성해준다.
create view member_address as select userid, name, concat(address1, ' ' , address2, ' ', address3) as address from member;
select * from member_address;
view 수정 (덮어쓰기)
create or replace view vip_member as
select userid, name, point, email from member where point >= 100;
-- create or replace view 뷰이름 as select 수정할 데이터
-- 이때 내용이 덮어쓰기로 저장되므로, 실무에서는 사용시 조심해야한다.
select * from vip_member;
view 삭제
drop view vip_member;
view 구조 확인
show create view vip_member;
view 목록 확인
show full tables where table_type='VIEW';
-- view의 이름은 꼭 대문자로 적어줘야한다
view를 통한 단순화
-- 기존 select문과 join을 통한 데이터 출력
select m.userid, m.name, o.product_name, o.price, o.order_date from member m
join orders o on m.idx = o.member_idx;
-- view를 통해 단순화
create view member_order as
select m.userid, m.name, o.product_name, o.price, o.order_date from member m
join orders o on m.idx = o.member_idx;
-- 이후 동일한 데이터를 조회할때는 다음과 같이 사용하면 된다
select * from member_order;
'BACK-END' 카테고리의 다른 글
| [Node.js] Node.js 기초 1 (0) | 2026.06.28 |
|---|---|
| [MySQL] MySQL 연동 (0) | 2026.06.09 |
| [MySQL] MySQL 함수 (0) | 2026.06.09 |
| [MySQL] 서브쿼리 (Sub Query) (1) | 2026.06.09 |
| [MySQL] 정규화 (0) | 2026.06.06 |