본문 바로가기

MySQL

10. 뷰(View)

뷰(View)

  • 가상의 테이블을 생성
  • 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음
뷰를 만드는 이유
  • sql 코드를 간결하게 만들기 위함
  • 삽입, 삭제, 수정 작업에 제한 사항을 가짐
  • 내부 데이터를 전체 공개하고 싶지 않을 때
뷰 만들기
create view 뷰이름 as 쿼리 ...;
create view vw_member as select userid, username, hp, gender from member;
select * from vw_member;
userid username hp gender
apple 김사과 01011111111 남자
banana 반하나 01022222222 남자
berry 배예리 01099999999 여자
grapes 김포도 01055555555 여자
melon 김멜론 01044444444 남자
orange 오렌지 01033333333 여자
뷰 수정하기
alter view 뷰이름 as 쿼리 ...;
alter view vw_member as select userid, username from member;
select * from vw_member;
userid username
apple 김사과
banana 반하나
berry 배예리
grapes 김포도
melon 김멜론
orange 오렌지
뷰 대체하기
create or replace view 뷰이름 as 쿼리 ...;
create or replace view vw_member as select userid, username, gender from member;
select * from vw_member;
userid username gender
apple 김사과 남자
banana 반하나 남자
berry 배예리 여자
grapes 김포도 여자
melon 김멜론 남자
orange 오렌지 여자
뷰 삭제하기
drop view 뷰이름;
drop view vw_member;
# 뷰를 삭제했으므로 오류
select * from vw_member; # Error Code: 1146. Table 'kdt.vw_member' doesn't exist
뷰 업데이트
create view vw_member as select userid, username, hp,gender from member; # 뷰 생성
update vw_member set hp = '01012341234' where userid = 'berry'; # 전화번호 수정
select * from vw_member where userid = 'berry';
userid username hp gender
berry 배예리 01012341234 여자
select hp from member where userid = 'berry'; # 실제 테이블에서도 수정됨
hp
01012341234
뷰 추가하기
# 테이블 not null 제약조건으로 인해 데이터 삽입이 안됨
# 추가하고 싶다면 실제 테이블에서 not null 제약조건을 없애던가, 실제 테이블에서 not null 제약조건을 가진 컬럼을 view에 추가해야됨
insert into vw_member values ('avocado', '안가도', '01088888888', '남자'); # Error Code: 1423. Field of view 'kdt.vw_member' underlying table doesn't have a default value

 

'MySQL' 카테고리의 다른 글

12. 인덱스(index)  (0) 2023.03.21
11. 트랜젝션(Transaction)  (0) 2023.03.21
9. MySQL 사용자  (7) 2023.03.21
8. 서브쿼리(sub Query)  (0) 2023.03.20
7. 유니온(union)  (0) 2023.03.20