테이블 복사 실습
1. SCOTT 계정의 EMP 테이블을 복사해서 비등가 조인으로 등급별 ENAME, SAL 검색하기)
1) cmd에서 scott 계정으로 로그인 후 flower 계정에 scott 계정의 emp 테이블 검색 권한 부여


2) SCOTT의 EMP 테이블을 복사하여 EMP 테이블 생성
CREATE TABLE EMP AS SELECT * FROM SCOTT.EMP;
3) 검색
SELECT S."LEVEL", E.ENAME, E.SAL FROM EMP E JOIN SALGRADE S
ON E.SAL BETWEEN S.LOSAL AND S. HISAL ORDER BY 1;
2. HR 계정의 DEPT 테이블을 복사한 후, 복사한 테이블에서 LOC별 평균 급여 검색(단, LOC은 모두 검색)
1) cmd에서 hr 계정으로 로그인 후 flower계정에 hr 계정의 DEPT, EMP 테이블 검색 권한 부여



2) SCOTT의 DEPT 테이블을 복사하여 COPY_DEPT, COPY_EMP 테이블 생성
CREATE TABLE COPY_DEPT AS SELECT * FROM HR.DEPT;
CREATE TABLE COPY_EMP AS SELECT * FROM HR.EMP;
3) 검색
SELECT LOC, NVL(AVG(E.SAL), 0) 평균급여 FROM COPY_DEPT D LEFT OUTER JOIN COPY_EMP E
ON D.DEPTNO = E.DEPTNO
GROUP BY LOC;
VIEW
● VIEW
- 기존 테이블은 그대로 놔둔 채 필요한 컬럼들 및 새로운 컬럼을 만든 가상 테이블
- 실제 데이터가 저장되는 것은 아니지만 VIEW를 통해서 데이터를 관리할 수 있다.
● VIEW 장점
- 독립성 : 다른 곳에서 변경하지 못하도록 한다.
- 편리성 : 긴 쿼리문을 짧게 사용 가능
- 보안성 : 짧게 만들기 때문에 기존의 쿼리는 보이지 않는다.
(ex)
1. PLAYER 테이블에 선수들의 나이를 추가한 VIEW 생성 후 30살이 넘은 선수 검색
1) cmd에서 system 계정으로 로그인 후 flower 계정에 view 생성 권한 부여


2) VIEW 생성
CREATE VIEW PLAYER_AGE
AS (SELECT ROUND((SYSDATE - BIRTH_DATE) / 365) AGE, P.* FROM COPY_PLAYER P);
3) 검색
SELECT * FROM PLAYER_AGE WHERE AGE >30;
※ 생성한 뷰 제거
DROP VIEW PLAYER_AGE;