데이터베이스(DB)
테이블과 뷰(2)
sck07013
2024. 12. 3. 18:20
뷰
데이터베이스 개체 중 하나
테이블처럼 데이터를 갖고 있지 않음
select 문으로 만들어져 있어 뷰에 접근하는 순간 select가 실행되고 그 결과가 화면에 출력되는 방식
단순 뷰: 하나의 테이블과 연관된 뷰
복합 뷰: 2개 이상의 테이블과 연관된 뷰
뷰의 생성
create view 뷰_이름
as
select 문;
뷰에 접근하는 방식
select 열_이름 from 뷰_이름
[where 조건];
뷰 생성
use market_db;
create view v_member
as
select mem_id, mem_name, addr from member;
뷰 사용
select * from v_member;

뷰의 실제 생성
뷰에서 사용될 열을 테이블과 다르게 지정 가능
use market_db;
create view v_viewtest1
as
select B.mem_id 'Member ID', M.mem_name as 'Member Name', B.prod_name 'Product_name', concat(M.phone1, phone2) as 'Office Phone'
from buy B
inner join member M
on B.mem_id = M.mem_id;
select distinct 'Member ID', 'Member Name' from v_viewtest1; -- 백틱을 사용
뷰의 수정
alter view v_viewtest1
as
select B.mem_id '회원 아이디', M.mem_name AS '회원 이름', B.prod_name '제품 이름', concat(M.phone1, M.phone2) AS '연락처'
from buy B
inner join member M
on B.mem_id = M.mem_id;
select distinct '회원 아이디', '회원 이름' from v_viewtest1; -- 백틱을 사용
뷰의 삭제
drop view v_viewtest1;
뷰의 정보 확인
기존에 생성된 뷰에 대한 정보를 확인 가능
use market_db;
create or replace view v_viewtest2
as
select mem_id, mem_name, addr from member;
describe v_viewtest1;

뷰를 통한 데이터의 수정
update v_member set addr = '부산' where mem_id = 'blk' ;
v_height167 뷰에서 키가 167 미만인 데이터를 삭제
delete from v_height167 where height < 167;
v_height167뷰에서 데이터 입력
insert into v_height167 values('tra', '티아라', 6, '서울', null, null, 159, '2005-01-01');
설정된 범위를 벗어나는 값은 입력되지 않게 하기
alter view v_height167
as
select * from member where height >= 167
with check option;