View
뷰(View)
- 데이터베이스에 존재하는 일종의 가상의 테이블을 의미함
- 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음
- MySQL에서 뷰는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만을 수행함
즉, 뷰를 사용하면 여러 테이블이나 뷰를 하나의 테이블처럼 볼 수 있다!
뷰를 만드는 이유
- 복잡한 SQL코드를 간결하게 만들기 위해
- 삽입, 삭제, 수정 작업에 제한 사항을 가짐
- 특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있음
# create view 뷰이름 as 쿼리...
use kdt;
select * from member;
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를 출력하는 뷰를 만들고 select만 할 수 있는 melon계정을 생성
select * from profile;
select userid, username, hp from member;
create view vw_memberprofile as select m.userid, m.username, m.hp, p.mbti from member as m left join profile as p on m.userid = p.userid;
select * from vw_memberprofile;
create user 'melon'@'localhost' identified by '1111';
grant select on kdt.vw_memberprofile to 'melon'@'localhost';
# melon으로 접속 후 테스트
use kdt;
select * from member; #Error Code: 1142. SELECT command denied to user 'melon'@'localhost' for table 'member'
select * from vw_memberprofile;
뷰 수정하기
- CREATE 문을 사용하여 생성된 뷰는 ALTER 문을 사용하여 수정할 수 있다
# alter view 뷰이름 as 쿼리 ...
뷰 대체하기
- CREATE 문에 OR REPLACE 절을 추가하여 기존에 존재하는 뷰를 새로운 뷰로 대체할 수 있다
# create or replace view 뷰이름 as 쿼리 ...
use kdt;
create or replace view vw_memberprofile as
select m.userid, m.username, m.hp, p.mbti
from member as m left join profile as p on m.userid = p.userid;
뷰 삭제하기
- DROP 문을 사용하여 생성된 뷰를 삭제할 수 있다
# drop view 뷰이름;
drop view vw_member;
create view vw_member as select userid, username, hp, gender from member;
select * from vw_member;
update vw_member set hp='010-9999-9999' where userid='berry';
select * from member; # 실제 데이터도 바뀌는지 확인. 바뀌었음!
'KDT 수업 > MySQL' 카테고리의 다른 글
인덱스(index) (0) | 2023.03.21 |
---|---|
트랜잭션(Transaction) (0) | 2023.03.21 |
Day4: MySQL 사용자 추가하기 (2) | 2023.03.21 |
Day3: MySQL 데이터 정규화, 다중테이블 연산(Join / Union / 서브쿼리) (2) | 2023.03.20 |
Day2: MySQL 연산자 / 제약조건 (0) | 2023.03.16 |