본문 바로가기

자바스프링웹공부(2024)/마이에스큐엘

2024.09.04. 데이터정의어(DDL) - View

반응형

- 뷰(view)란?  하나이상의 테이블을 기반으로 생성은 되었으나 물리적으로 존재하지 않고  DB사전에 정의만 되어 있는 가상의 논리적인 테이블
- 뷰 사용 목적 : 보안성, 공간 효율성, 편의성
- 뷰와 관련된 DDL : create view, alter view, drop view

 

(1) 뷰 생성(create view)

[문법] create view 뷰명
	as select 컬럼1, 컬럼2, 컬럼3
	from 테이블명
	where 조건문;

 

- 뷰 생성 예제 : employee 테이블에서 원하는 컬럼뽑아와서 view 생성하기(department_id가 200이상만 가져옴.)

create view deptvu
as select * from departments
where department_id > 200;

 

- 뷰를 통한 DML 작업예제

-- 뷰를 통한 DML 작업
insert into deptvu values (350, 'AAA', 200, 1700);

-- Base table에 DML 작업하기(view테이블인 deptvu에서는 id가 300이상만 보인다.)
insert into departments values (360, 'BBB', null, null);

-- [참고] 예제
insert into deptvu values (9, 'CCC', null, null);

select *
from deptvu; -- 뷰를 통해서는 insert 결과 볼 수 없음. 왜냐면 id가 300이상이므로)

select *
from departments; -- base table에서는 insert 결과 보임.

 

 

[보안성] 뷰 생성 예제3

-- members 테이블에서 꼭 필요한 컬럼만 뽑아오고, members 테이블내의 주민번호나 전화번호는 가져오지않음.
create view member_vu
as select member_id, member_name, birth, job
from members;

 

[편의성] 뷰 생성 예제4

-- 계산을 한 뷰테이블 생성
create view dept_sal_vu
as select d.department_name, sum(e.salary) as "급여 합계",
avg(e.salary) as "급여 평균", min(e.salary) as "최소 급여",
max(e.salary) as "최대 급여"
from employees e join departments d
on e.department_id = d.department_id
group by d.department_name
order by d.department_name;


(2) 뷰 수정(alter view) - create view와 거의 동일함. 앞에 alter 붙는 거 빼고는.

 [문법] alter view 뷰명
           as select 컬럼1, 컬럼2, 컬럼3
           from 테이블명
           where 조건문;

alter view empvu80
as select employee_id, last_name, salary, email, department_id
from employees
where department_id = 80;

 

(3) 뷰 삭제(drop view)

- 삭제한다고 베이스 테이블에 영향은 없다. DML작업 하는 것도 결국은 base table에 들어가는 것이니까.

[문법] drop view 뷰명;

drop view empvu80;
desc empvu80; -- 조회해도 존재하지 않는다. base table 에 미치는 영향도 없다.

          


(4) DB 사전으로부터 뷰 정보 조회

- 뷰 : db 사전에 select 구문 형태로 존재만 하는 것.

use information_schema;
show tables;
select *
from views
where table_schema='hr';

- 워크벤치 : view definition - 우클릭 - open value 하면 상단에 어떻게 정의 되었는지 상세창이 뜬다.

반응형