IT_developers

SQL - scott(DML 실습) 본문

SQL

SQL - scott(DML 실습)

developers developing 2022. 8. 18. 12:00

※ 기존 테이블을 이용하여 테이블을 생성

 

실습 1) emp테이블의 내용을 이용하여 exam_emp 생성(내용까지)

CREATE TABLE exam_emp
    AS
        SELECT
            *
        FROM
            emp;

 

실습 2) dept 테이블의 내용을 이용하여 exam_dept 생성

CREATE TABLE exam_dept
    AS
        SELECT
            *
        FROM
            dept;

 

실습 3) salgrade 테이블의 내용을 이용하여 exam_salgrade 생성

CREATE TABLE exam_salgrade
    AS
        SELECT
            *
        FROM
            salgrade;

 

실습 4) 정보를 exam_emp 테이블에 입력

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);

 

변경 전                                                                                          변경 후

 

실습 5) exam_emp에 속한 사원 중 50번 부서에서 근무하는 사원들의 평균 급여보다 많은 급여를 받고 있는 사원들을 70번 부서로 변경

50번 부서의 평균 급여 조회

SELECT
    AVG(sal)
FROM
    exam_emp
WHERE
    deptno = 50;

UPDATE exam_emp
SET
    deptno = 70
WHERE
    sal > (
        SELECT
            AVG(sal)
        FROM
            exam_emp
        WHERE
            deptno = 50
    );

변경 전                                                                     변경 후

 

실습 6) exam_emp에 속한 사원 중 60번 부서의 사원 중에서 입사일이 가장 빠른 사원보다 늦게 입사한 급여를 10%인상하고 80번 부서로 변경

UPDATE exam_emp
SET
    sal = sal * 1.1,
    deptno = 80
WHERE
    hiredate > (
        SELECT
            MIN(hiredate)
        FROM
            exam_emp
        WHERE
            deptno = 60
    );

변경 전                                                                                   변경 후

 

실습 7) exam_emp에 속한 사원 중, 급여 등급이 5인 사원을 삭제

DELETE FROM exam_emp
WHERE
    empno IN (
        SELECT
            empno
        FROM
                 exam_emp e
            JOIN exam_salgrade s ON e.sal BETWEEN s.losal AND s.hisal
        WHERE
            s.grade = 5
    );

변경 전                                                                                   변경 후

'SQL' 카테고리의 다른 글

SQL - hr 실습 1  (0) 2022.08.19
SQL - hr 만들기  (0) 2022.08.19
SQL - scott(개념 + 실습) DML- update, delete  (0) 2022.08.17
SQL - scott(개념 + 실습) DML- insert  (0) 2022.08.16
SQL - scott(개념 + 실습) 서브쿼리  (0) 2022.08.15
Comments