개발자로 가는길 :: Oracle DB ( insert , delete , update 실습)

Oracle DB ( insert , delete , update 실습)

728x90
반응형
--실습1 

CREATE TABLE EXAM_EMP AS SELECT * FROM EMP;
CREATE TABLE EXAM_DEPT AS SELECT * FROM DEPT;
CREATE TABLE EXAM_SALGRADE AS SELECT * FROM SALGRADE;

INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7201,'TEST_USER1','MANAGER' , 7788 , '2016/01/02', 4500,NULL,50);
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7202,'TEST_USER2','CLERK' , 7201 , '2016/02/21', 1800,NULL,50);
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7203,'TEST_USER3','ANALYST' , 7201 , '2016/04/11', 3400,NULL,60) ;
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7204, 'TEST_USER4' , 'SALESMAN' , 7201 , '2016/05/31', 2700,300,60);
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7205,'TEST_USER5','CLERK' , 7201 , '2016/07/20', 2600,NULL,70);
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7206,'TEST_USER6','CLERK' , 7201 , '2016/09/08', 2600,NULL,70);
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7207,'TEST_USER7','LECTURER' , 7201 , '2016/10/28', 2300,NULL,80);
INSERT INTO  EXAM_EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
values(7208,'TEST_USER8','STUDENT' , 7201 , '2018/03/09', 1200,NULL,80);

SELECT * FROM EXAM_EMP;

--[실습3] EXAM_EMP에 속한 사원 중 50번 부서에서 근무하는 사원들의 평균 급여보다 많은 급여를 받고 있는 사원들을 
--70번 부서로 옮기는 SQL 문 작성하기
UPDATE EXAM_EMP 
SET DEPTNO = 70 
WHERE DEPTNO IN 
(
SELECT DEPTNO 
FROM EXAM_EMP 
WHERE SAL >
(
SELECT  AVG(SAL) 
FROM  EMP 
WHERE DEPTNO = 50
) );

--[실습4] EXAM_EMP에 속한 사원 중 60번 부서의 사원 중에서 입사일이 가장 빠른 사원보다
--늦게 입사한 사원의 급여를 10% 인상하고 80번 부서로 옮기는 SQL 문 작성하기
UPDATE EXAM_EMP
SET SAL = SAL * 1.1, 
        DEPTNO = 80 
WHERE HIREDATE > (
  SELECT MIN(HIREDATE) 
  FROM EXAM_EMP 
  WHERE DEPTNO = 60 
  );

--[실습5] EXAM_EMP에 속한 사원 중, 급여 등급이 5인 사원을 삭제하는 SQL문을 작성하기
DELETE FROM EXAM_EMP
WHERE E.EMPNO  IN (SELECT E.EMPNO  
FROM EXAM_EMP E, EXAM_SALGRADE S 
WHERE E.SAL BETWEEN E.SAL AND S.LOSAL AND S.SALGRADE = 5) ;

COMMIT;
728x90
반응형

댓글()