반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 상관서브쿼리
- Daemon()
- include지시자
- 상관 서브 쿼리
- interrupted()
- StringWriter
- include 지시자
- first-of-child
- 표현 언어
- Linux셋팅
- 메모리스트림
- 리눅스셋팅
- 아이디중복
- 리눅스세팅
- sleep()메소드
- ThreadGroup()
- String char[] 형변환
- interrupt()
- InputDialog
- char[] String 형변환
- first-child
- ID중복
- Linux세팅
- include액션태그
- 동기화
- StringReader
- 스레드그룸
- ObjectInputStream
- MemoryStream
- isinterrupted()
Archives
- Today
- Total
다연이네
[days08] 한번에 여러 데이터 insert하기 / 다중 insert 문 본문
반응형
1. 서브쿼리를 사용하여 한번에 여러 데이터 추가하기
select *
from emp
where deptno = 10; --이걸 통째로 추가하겠다
이제까지는 insert into 테이블명(컬럼명...) values (컬럼값...); 이렇게 배웠는데
서브쿼리를 이용하면 insert into tbl_emp10(deptno, empno, ename, hiredate)
예) 10번 부서의 사원정보를 테이블에 insert 하기
insert into tbl_emp10(deptno, empno, ename, hiredate)
select deptno, empno, ename, hiredate
from emp
where deptno = 10;
1. 다중 insert 문
insert into tbl_emp10 select * from emp;
insert into tbl_emp20 select * from emp;
insert into tbl_emp30 select * from emp;
위처럼 insert를 3줄로 쓰지 않고 다중 insert문을 사용하겠다
- unconditional insert all
insert all --all | first
into tbl_emp10 values (empno, ename, job, mgr, hiredate, sal, comm,deptno)
into tbl_emp20 (empno, ename, deptno) values (empno, ename, deptno)
into tbl_emp30 values (empno, ename, job, mgr, hiredate, sal, comm,deptno)
select * from emp; --36개행 삽입 (12개씩)
모든 12명 사원의 정보를 -> tbl_emp10,20,30에 12명씩 채워넣었다
근데 마치 if문처럼 10번부서원들만 10테이블에, 20부서원은 20테이블에 30사원은 30테이블에만 채워넣고 싶다
- conditional insert all
insert all
when deptno=10 then into tbl_emp10 values (empno, ename, job, mgr, hiredate, sal, comm,deptno)
when deptno=20 then into tbl_emp20 values (empno, ename, job, mgr, hiredate, sal, comm,deptno)
else into tbl_emp30 values (empno, ename, job, mgr, hiredate, sal, comm,deptno)
select * from emp; --12개 행 삽입
all과 first의 차이가 뭐야 ?
all 대신에 first를 주면 첫번째 조건을 만족하면 뒤에꺼는 안물어보고 건너뜀
all.
insert all
when deptno=10 then
into tbl_emp10 values(empno, ename, job, mgr, hiredate, sal, comm,deptno)
when job='CLERK' then
into tbl_emp20 values(empno, ename, job, mgr, hiredate, sal, comm,deptno)
--만일 deptno=10이고 job='CLERK'인 사람은 first쓰면 뒤까지 안보니까
--tbl_emp20에 추가 안됨 (all은 됨)
select * from emp;
first.
insert first--first를 주면 첫번째 조건을 만족하면 뒤에꺼는 안물어보고 건너뛴다
when deptno=10 then
into tbl_emp10 values(empno, ename, job, mgr, hiredate, sal, comm,deptno)
when job='CLERK' then
into tbl_emp20 values(empno, ename, job, mgr, hiredate, sal, comm,deptno)
select * from emp;
- Pivoting insert 문
create table sales(
employee_id number(6), --사원번호(ID)
week_id number(2), --주번호(ID)
sales_mon number(8,2), --각 요일 판매량
sales_tue number(8,2),
sales_wed number(8,2),
sales_thu number(8,2),
sales_fri number(8,2)
);
insert into sales values(1101,4,100,150,80,60,120);
insert into sales values(1102,5,300,300,230,120,150);
commit;
select * from sales;
이 가로로 출력된 결과물을 세로로 바꾸고 싶다
create table sales_data(
employee_id number(6),
week_id number(2),
sales number(8,2)
);
insert all
into sales_data values(employee_id, week_id, sales_mon)
into sales_data values(employee_id, week_id, sales_tue)
into sales_data values(employee_id, week_id, sales_wed)
into sales_data values(employee_id, week_id, sales_thu)
into sales_data values(employee_id, week_id, sales_fri)
select employee_id, week_id, sales_mon, sales_tue, sales_wed,
sales_thu, sales_fri
from sales;
select * from sales_data; --월월화화수수목목금금
반응형
'Oracle' 카테고리의 다른 글
[days09] 제약조건 (0) | 2020.11.10 |
---|---|
[days08] merge문 (통합, 병합) (0) | 2020.11.09 |
[days08] any, some 연산자 (0) | 2020.11.09 |
[days08] DML - 테이블에 데이터 추가, 복사, 수정 등 + 제약조건 (0) | 2020.11.09 |
[days08] DDL - create, alter, drop와 테이블 기초 (0) | 2020.11.09 |
Comments