-
Oracle - Insert 실습 한방정리DataBase/Oracle 2024. 8. 27. 22:13반응형
Insert 실습 한방정리
테이블의 내용이 아닌 컬럼만 가지고 와서 테이블을 만들어준다.
CREATE TABLE emp01 as SELECT empno, ename, job FROM emp WHERE 1=0;
다음과 같은 사원 정보를 추가한다.
1111 홍길동 인사 / 2222 김길동 개발 / 3333 최길동 인사 / 4444 박길동 생산INSERT INTO emp01(empno, ename, job) values(1111, '홍길동', '인사'); SELECT * FROM emp01; INSERT INTO emp01(empno, ename, job) values(2222, '김길동', '개발'); INSERT INTO emp01(empno, ename, job) values(3333, '최길동', '인사'); INSERT INTO emp01(empno, ename, job) values(4444, '박길동', '생산');
values에 들어간 값과 insert into에 적어준 컬럼이 1:1 매칭이 되어 값이 들어가게 된다.
컬럼 목록을 생략하는 경우
INSERT INTO emp01 values(5555, '홍길동', '개발');
컬럼 목록을 생략하여도 values와 컬럼의 갯수가 일치한다면 정상적으로 값이 insert된다.
컬럼 목록에 모든 컬럼이 있지 않는 경우
INSERT INTO emp01(empno, ename) VALUES (6666, '이길동');
emp01테이블에는, empno, ename, job 이렇게 3개의 컬럼이 존재하지만 2개의 컬럼만 명시하여 해당 컬럼에 값을 넣어준다면, 생략한 컬럼에는 null값이 들어가게 된다.
Null을 명시적으로 저장
INSERT INTO emp01 (empno, ename, job) values(7777, '박보검', NULL);
<예시 테이블 생성>
CREATE table emp02 AS SELECT empno, ename, job FROM emp WHERE 1=0;
컬럼이 동일하지 않아도 값이 들어간다. 단 순서대로 들어간다.
INSERT INTO emp02(empno, ename, job) SELECT empno, ename, hiredate FROM emp;
이와같이 컬럼명이 동일하지 않아도 순서대로 값이 들어가게 된다.
서브쿼리로 Insert하기
INSERT INTO emp02 SELECT empno, ename, job FROM emp01;
서브쿼리를 사용하여 이와같이 insert할 수 있다.
<예시 테이블 추가 생성>
CREATE table emp03 AS SELECT empno, ename, job FROM emp WHERE 1=0; CREATE table emp04 AS SELECT empno, ename, hiredate FROM emp WHERE 1=0;
서브 쿼리의 결과를 가지고 와서 해당 컬럼에 맞게 값을 Insert한다.
INSERT ALL INTO emp03(empno, ename, job) values(empno, ename, job) INTO emp04(empno, ename, hiredate) values(empno, ename, hiredate) SELECT empno, ename, job, hiredate FROM emp;
<문제>
사원번호, 이름 급여를 저장할 수 있는 빈 테이블을 만들고
급여가 1500이상인 사원들의 사원번호, 이름, 급여를 저장한다.CREATE TABLE emp05 AS SELECT empno, ename, sal FROM emp WHERE 1=0;
우선 emp05라는 테이블을 생성한다.
INSERT INTO emp05 SELECT empno, ename, sal FROM emp WHERE sal >= 1500;
서브쿼리를 사용하여 값을 넣어준다. (컬럼명을 생략하는 경우 갯수가 초과 되지 않는다면 오류가 발생하지 않는다.)
사원번호, 이름, 부서명을 저장할 수 있는 빈 테이블을 만들고
DALLAS 지역에 근무하고 있는 사원들의 사원번호, 이름, 부서명을 저장한다.CREATE TABLE emp06 AS SELECT a1.empno, a1.ename, a2.dname FROM emp a1, dept a2 WHERE a1.deptno = a2.deptno AND 1=0;
INSERT INTO emp06(empno, ename, dname) SELECT e.empno, e.ename, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno;
반응형'DataBase > Oracle' 카테고리의 다른 글
Oracle - delete 정복하기 (0) 2024.09.03 Oracle - Update 정복하기 (0) 2024.09.02 Oracle - Insert 개념정리 (0) 2024.08.27 Oracle - SET(UNION, UNION ALL, INTERSECT, MINUS) (0) 2024.08.21 Oracle - 결과가 하나 이상인 서브쿼리(IN, ANY, ALL) (0) 2024.08.20