(오라클동영상학원교육, 오라클학원가보세요)오라클, SQL 동영상강의, 인라인 뷰(Oracle Inline View)

오라클, SQL 동영상강의, 인라인 뷰(Oracle Inline View)인라인뷰란?인라인뷰를 이용한 데이터 수정 및 삭제강의 : 오라클자바커뮤니티(http://ojc.asia)실습데이터 생성 http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=654&sfl=wr_subject&stx…
ojc.asia
인라인뷰란?
인라인뷰를 이용한 데이터 수정 및 삭제
강의 : 오라클자바커뮤니티(http://ojc.asia)
인라인 뷰inline view는 실제 뷰가 아니라 SELECT의 FROM절에 있는 서브 쿼리sub query로 FROM 절에서 테이블 처럼 사용될 데이터를 정의할 때 사용 합니다. FROM절의 테이블을 대체 할 수 있다고 해서 파생 테이블이라고도 부릅니다.
- 0열 선택0열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
SELECT 컬럼리스트 FROM 테이블; SELECT 컬럼리스트 FROM ( SELECT * FROM 테이블 ) t; |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
서브 쿼리는 FROM절에서도 사용 가능 한데 이를 뷰(View)인데 CREATE VIEW 명령어로 만들지 않고 SQL문의 해당 라인에 직접 기술한다고 해서 인라인 뷰(InLine View)라고 합니다. SQL문 라인에 직접 기술하니 필요한 시점에만 사용되는 특징이 있습니다.
인라인 뷰를 사용하면 조인 작업을 제거하거나 별도의 쿼리를 하나의 쿼리로 통합해서 복잡한 쿼리를 단순화 할 수 있습니다. 또한 복잡한 조인 연산시 조인의 타겟 테이블의 데이터 개수를 줄일 수 있습니다.
인라인뷰를 이용한 쿼리 예문을 실습해 보겠습니다.
실습
- 0열 선택0열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
실습을 위한 사원(EMP), 부서(DEPT) 테이블 데이터를 확인 인라인뷰를 사용하여 사원(EMP), 부서(DEPT) 테이블에서 부서별로 부서명, 급여의 평균, 급여의 합계를 출력 하세요. (부서명으로 오름차순 정렬, 급여 평균은 소수이하 첫째 자리에서 반올림) |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
인라인 뷰를 이용하여 EMP 테이블에서 부서코드별 급여 평균, 합을 구하고 부서코드(deptno)를 조인 키로 DEPT 테이블과 조인하여 부서명을 읽습니다.
SELECT DNAME, AVG_SAL, SUM_SAL
FROM (
-- EMP 테이블에는 부서명이 없다.
-- 부서코드별 급여의 평균과 합을 구한다.
SELECT DEPTNO, ROUND(AVG(SAL)) AVG_SAL, SUM(SAL) SUM_SAL
FROM EMP
GROUP BY DEPTNO
) E, DEPT D
WHERE E.DEPTNO = D.DEPTNO --부서명을 가져오기 위해 DEPT 테이블과 조인을 한다.
ORDER BY DNAME;
<실행결과>
- 0열 선택0열 다음에 열 추가
- 1열 선택1열 다음에 열 추가
- 2열 선택2열 다음에 열 추가
- 3열 선택3열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
- 1행 선택1행 다음에 행 추가
- 2행 선택2행 다음에 행 추가
- 3행 선택3행 다음에 행 추가
DNAME | AVG_SAL | SUM_SAL | |
1 | ACCOUNTING | 1875 | 3750 |
2 | RESEARCH | 2175 | 10875 |
3 | SALES | 1567 | 9400 |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
ROUND 함수에 별다른 파라미터를 사용하지 않으면 소수이하 첫째 자리에서 반올림 합니다.
인라인 뷰의 모양은 FROM절 아래의 서브 쿼리 형태이며 이 부분이 바깥쪽 메인 쿼리보다 먼저 실행되고 DEPT 테이블과 조인 후 최종 결과가 추출 됩니다.
실습
인라인 뷰를 이용하여 데이터를 수정해 봅니다.
- 0열 선택0열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
인라인뷰를 사용하여 ‘SALES’ 부서원들의 급여를 100 증가 하세요. |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
-- SALES 부서원들의 급여를 확인 합니다.
SELECT EMP.ENAME, SAL
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DEPT.DNAME = 'SALES';
-- 인라인뷰를 이용해서 SALES 부서원들의 급여를 100증가 합니다.
UPDATE
(
SELECT SAL
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DEPT.DNAME = 'SALES'
)
SET SAL = SAL + 100;
-- SALES 부서원들의 급여가 100 증가됨을 확인 합니다.
SELECT EMP.ENAME, SAL
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DEPT.DNAME = 'SALES';
다음 실습을 위해 변경 사항을 COMMIT 하지않고 ROLLBACK하여 변경사항을 원복 합니다.
ROLLBACK;
실습
인라인 뷰를 이용하여 데이터를 삭제해 봅니다.
- 0열 선택0열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
인라인뷰를 사용하여 EMP 테이블에서 ‘SALES’ 부서원들 삭제하세요. |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
-- SALES 부서원들을 확인 합니다. 6명의 사원이 확인 됩니다.
SELECT EMP.EMPNO, EMP.ENAME, DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DEPT.DNAME = 'SALES';
-- 인라인뷰를 이용해서 SALES 부서원을 삭제 합니다.
DELETE
(
SELECT EMP.*
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DEPT.DNAME = 'SALES'
);
-- SALES 부서원들을 확인 합니다. 0명의 사원이 확인 됩니다.
SELECT EMP.EMPNO, EMP.ENAME, DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DEPT.DNAME = 'SALES';
다음 실습을 위해 변경 사항을 COMMIT 하지않고 ROLLBACK하여 변경사항을 원복 합니다.
ROLLBACK;
#인라인뷰, #오라클인라인뷰, #SQL인라인뷰, #inlineview, #오라클학원, #SQL학원, #SQL교육, #오라클교육, #ORACLE교육, #ORACLE학원, #ORACLE동영상, #ORACLE강좌, #오라클학원동영상, #SQL학원동영상,인라인뷰, 오라클인라인뷰, SQL인라인뷰, inlineview, 오라클학원, SQL학원, SQL교육, 오라클교육, ORACLE교육, ORACLE학원, ORACLE동영상, ORACLE강좌, 오라클학원동영상, SQL학원동영상