본문 바로가기

Study/class note

sql중급 / 서브쿼리를 사용한 insert문

085 서브 쿼리를 사용하여 데이터 입력하기

-- emp800이라는 테이블 생성하기
create table emp800
(  empno   number(10),
   ename   varchar2(10),
   job     varchar2(10),
   sal      number(10) );
   
-- emp800에 서브쿼리문을 사용한 insert문으로 데이터를 입력 (values 사용하지 않음)
insert into emp800(empno, ename, job, sal)
select empno, ename, job, sal
 from emp
 where job = 'SALESMAN';
 
 /* 보통 데이터를 넣는 방법(한 건씩)
 insert into emp800(empno, ename, job, sal)
  vwlues (9283, 'ALLEN','SALESMAN',3400); */

문제421. emp테이블을 emp_backup2이름으로 백업하시오

create table emp_backup2
as
select *
 from emp;

문제422. emp_backup2를 truncate 하시오

 truncate table emp_backup2;

현업에서는 데이터가 계속해서 새로 쌓이고 변경이 되므로 원본(emp)에 대한 백업본(emp_backup2)도 항상 원본과 똑같을 수 있도록 유지되어야함.

문제423. emp테이블의 모든 데이터를 emp_backup2테이블에 입력하시오

insert into emp_backup2
select *
 from emp;
 
-- 현업에서는 컬럼을 명확하게 보기 위해 컬럼을 다 입력함
insert into emp_backup2(empno, ename, sal, job, mgr, hiredate, comm, deptno)
select empno, ename, sal, job, mgr, hiredate, comm, deptno
 from emp;

문제424. dept테이블을 백업하시오(백업 테이블명은 dept_backup입니다)

create table dept_backup
as
 select *
  from dept;

문제425. dept테이블에 아래의 데이터를 입력하시오

부서번호 : 50 / 부서명 : transfer / 부서위치 : SEOUL

insert into dept(deptno, dname, loc)
   values(50, 'TRANSFER','SEOUL');

dept테이블과 dept_backup테이블의 내용이 서로 다름.

문제426. dept테이블과 dept_backup테이블의 데이터 차이가 어떻게 되는지 차이나는 데이터를 출력하시오

select *
 from dept
 minus
 select *
 from dept_backup;

문제427. 위의 차이가 나는 데이터를 dept_backup테이블에 입력하시오

insert into dept_backup
 select *
 from dept
 minus
 select *
 from dept_backup;
 
 -- dept테이블에 변경된 데이터들만 dept_backup 테이블에 입력함

문제428. emp테이블을 emp_backup3 이름으로 백업하시오

create table emp_backup3
as
 select *
  from emp;

문제429. emp테이블에 아래의 데이터를 입력하시오

사원번호 : 9392 / 사원이름 : JANE / 월급 : 6000 / 부서번호 : 30

insert into emp(empno, ename, sal, deptno)
   values (9392, 'JANE',6000,30);

문제430. (오늘의 마지막 문제) emp테이블에는 존재하는 데이터인데 emp_backup테이블에는 존재하지 않는 데이터를 emp_backup테이블에 입력하시오

insert into emp_backup3
select *
 from emp
 minus
 select *
 from emp_backup3;
반응형