728x90
반응형
SMALL
1. 뷰(view)란 ❓
- 가상의 테이블을 생성
- 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음
- 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만 수행
1-1. 뷰를 만드는 이유
- SQL 코드를 간결하게 만들기 위함
- 삽입, 삭제, 수정 작업에 제한 사항을 가짐(특정 사용자한테는 뷰에대한 권한만 주거나 할 수 있음)
- 내부 데이터를 전체 공개하고 싶지 않을 때
1-2. 뷰의 장점
- 특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있음(보안)
- 복잡한 쿼리를 단순화
- 쿼리를 재사용할 수 있음
1-3. 뷰의 단점
- 한 번 정의된 뷰는 변경할 수 없음
- 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐
- 자신만의 인덱스를 가질 수 없음
2. 뷰 생성, 수정, 대체, 삭제
2-1. 뷰 생성하기
create view 뷰이름 as 쿼리, ...
📍 뷰는 원본 테이블과 같은 이름을 가질 수 없다.
✅ member 테이블의 userid, username, hp, gender 컬럼만 뽑아 뷰로 설정해보자.
select userid, username, hp, gender from member; -- 뷰로 생성
create view vw_member as select userid, username, hp, gender from member;
select * from vw_member;
✅ member의 userid, username, hp와 profile의 mbti를 출력하는 view(vw_memberprofile)를 만들어보자.
select m.userid, m.username, m.hp, p.mbti from member as m
left outer join profile as p
on m.userid = p.userid; -- 원하는 컬럼들을 join하여 보기
# 뷰로 생성
create view vw_memberprofile as
select m.userid, m.username, m.hp, p.mbti from member as m
left outer join profile as p
on m.userid = p.userid;
2-2. 뷰 대체하기
# 해당 뷰가 존재하지 않으면 CREATE VIEW 문과 같은 결과를 반환
create or replace view 뷰이름 as 쿼리...
✅ 위의 vw_memeberprofile 뷰를 대체하기
create or replace view vw_memberprofile as
select m.userid, m.username, m.hp, p.mbti from member as m
left outer join profile as p
on m.userid = p.userid;
2-3. 뷰 수정하기
alter view 뷰이름 as 쿼리 ...
✅ 위 vw_memberprofile 뷰에서 mbti를 빼고 height 필드로 수정해보자.
alter view vw_member as
select m.userid, m.username, m.hp, p.height from member as m
left outer join profile as p
on m.userid = p.userid;
2-4. 뷰 삭제하기
drop view 뷰이름;
✅ 위 vw_memberprofile 뷰를 삭제해보자.
drop view vw_memberprofile;
# select * from vw_memberprofile;
-- Error Code: 1146. Table 'kdt.vw_memberprofile' doesn't exist
728x90
반응형
LIST
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] DROP, TRUNCATE, DELETE 차이점에 대해 알아보자! 🧐 (0) | 2023.03.21 |
---|---|
[MySQL] 트랜잭션(Transaction) - COMMIT & ROLLBCK (0) | 2023.03.21 |
[MySQL] 사용자 및 권한 설정하기! (0) | 2023.03.21 |
[MySQL] MySQL함수 - 2️⃣문자열 함수 (0) | 2023.03.20 |
[MySQL] 서브쿼리(Sub Query)에 대해 알아보자! 🧐 (0) | 2023.03.20 |