본문 바로가기

DBMS

[DBMS] 17

테이블 복사 실습

1. SCOTT 계정의 EMP 테이블을 복사해서 비등가 조인으로 등급별 ENAME, SAL 검색하기)

1) cmd에서 scott 계정으로 로그인 후 flower 계정에 scott 계정의 emp 테이블 검색 권한 부여

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 테이블 검색 권한 부여

hr 계정으로 로그인
emp 테이블 검색 권한 부여
DEPT 테이블 검색 권한 부여

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 생성 권한 부여

system 계정으로 로그인
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;
 

'DBMS' 카테고리의 다른 글

[DBMS] 19  (0) 2021.11.14
[DBMS] 18  (0) 2021.11.13
[DBMS] 16  (0) 2021.11.09
[DBMS] 15  (0) 2021.11.08
[DBMS] 14  (0) 2021.11.07