Programming/SQL

[SQL] 뷰(view) - 인라인 뷰 / with절

reeme 2020. 12. 17. 22:56

인라인 뷰

하나의 질의문 내에서만 생성되어 사용 되어지고 질의문 수행 종료 후에는 사라지는 뷰

-- 뷰의 명시적인 선언 ( 즉 , Create View 문 ) 이 없음

-- FROM 절에서 참조하는 테이블의 크기가 클 경우 , 필요한 행과 속성만으로

    구성된 집합으로 정의하여 질의문을 효율적으로 구성함

-- FROM 절에서 서브 쿼리를 사용하여 생성하는 임시 뷰

 

예 ) 부서별 평균 급여 파악하기
-> 부서번호로 나와있음
-> 부서명도 알고싶음
-> 사원테이블과 부서테이블의 조인이 필요함

select dname, avg(salary) from department d, employdd e where d.dno=e.dno group by dname;

예) 인라인뷰를 이용하여 부서별 부서명, 평균급여 출력하기

select dname, avg_sal from (select dno, avg(salary) as avg_sal 
from employee group by dno) as s, department d 
where s.dno = d.dno;

with절 

: 인라인뷰의 또 다른 정의 방법

with 임시테이블 (속성명 ) as (select ~ from~ where )  
-- from절에 임시 질의 결과를 정의하는 대신 with절을 이용하여 임시테이블을 생성함
예) with 절을 사용하여 부서별 급여평균 , 부서명을 출력하기
-- with절의 as문 이후의 질의 결과를 s라는 임시 테이블로 생성함
-- 메인 질의문에서는 s테이블과 부서테이블의 조인으로 표현함

with s(dno,avg_sal)
as(select dno, avg(salary) from employee group by dno) select dname, avg_sal 
from s, department 
where department.dno=s.dno;