데이터베이스(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;