# database/p240617/view.sql
1. view 란 ?
원래 실질적인 테이블이 있는 일부만 보여지게 하는 것 !
실질적으로 있는 테이블을 기반 테이블(base table), 물리적 존재라 부른다.
view 는 테이블은 아니고 일부 쿼리문 ! 논리적인 테이블, 가상 테이블이라 부른다.
- 가상의 테이블
- 물리적으로 존재하지 않음 → 논리적 존재
- 쿼리문(select) → 쿼리 재사용
- 추가, 삭제, 수정에 제약이 따를 수 있음
- 뷰는 인덱스를 가질 수 없음 --> 실제 테이블이 아니기 때문
- 보안의 효과를 가짐
2. 문법
create [or replace] view 뷰이름
as
select 컬럼명
from 테이블명;
그럼 view 생성해보자
# DB 선택
use test;
# [view] emp 생성
create view emp
as
select * from employees.employees;
show tables like 'emp';
# [view] emp 조회
select * from emp;
사실 이거는 select * from (select * from employees.employees); 와 같음 ! 쿼리문이다 가상 테이블이고 !!! 진짜 테이블 x !!
사번, 부서번호, 부서의 매니저 사번이 조회되는 v_dept_emp_manager 뷰 생성
1. DB 선택
# 1. DB 선택
use employees;
사번과 부서번호, 부서 매니저의 테이블은 dept_emp 테이블과 dept_manager 테이블를 join 해주면 된다
2-1. dept_manager 테이블 : 현재 부서 담당 매니저 사번 정보 조회
select dept_no, emp_no
from dept_manager
where to_date like '9999-01-01';
실행 결과를 보면 9개의 부서와 해당 부서의 매니저 사번을 알 수 있다 !
2-2. dept_emp 테이블 : 현재 근무 중인 사원들의 사번과 담당 부서번호
select emp_no, dept_no
from dept_emp
where to_date like '9999-01-01';
실행 결과를 보면 현재 근무 중인 사원의 사번과 해당 부서를 출력 !
3. dept_manager 와 dept_emp join
select de.emp_no '사번', de.dept_no '부서명', dm.emp_no '부서 매니저'
from dept_emp de join dept_manager dm on de.dept_no = dm.dept_no
where de.to_date like '9999-01-01' and dm.to_date like '9999-01-01';
join 조건 : 해당 담당하는 부서명을 join 으로 연결해주면 된다 !
where 절 : 현재 근무 중인 사원과 현재 부서 담당 매니저 를 조회한 것 ! 두개 하나라도 안하면 이전에 근무 했던 사람들도 조회된다
4. test DB 선택
use test;
5. v_dept_emp_manager view 생성
create view v_dept_emp_manager
as
select de.emp_no as emp_no, de.dept_no as dept_no, dm.emp_no as d_emp_no
from employees.dept_emp de join employees.dept_manager dm on de.dept_no = dm.dept_no
where de.to_date like '9999-01-01' and dm.to_date like '9999-01-01';
5-1. v_dept_emp_manager 데이터 조회
select * from v_dept_emp_manager
order by emp_no asc;
'Others > 데이터베이스' 카테고리의 다른 글
[MySQL] ERD 비식별 관계/식별 관계 (0) | 2024.06.18 |
---|---|
[SQL] INDEX 문법 정리 및 예제 (0) | 2024.06.18 |
DB 구축 단계 (0) | 2024.06.17 |
[SQL] 그룹 함수 집계 함수 문법 정리 및 예제 (0) | 2024.06.16 |
[SQL] SubQuery : 서브 쿼리 문법 정리 및 예제 (0) | 2024.06.16 |