본문 바로가기
Develop/DataBase

테이블의 내용 추가, 수정, 삭제하는 DML

by jaekk 2018. 7. 11.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
-- 테이블의 내용, 추가, 수정, 삭제하는 DML
-- DML 단위: 행
 
/*
insert : 테이블에 새로운 행 추가
입력 컬럼 나열 - 생략시 모든 컬럼에 데이터 입력
컬럼명과 입력값의 순서만 맞으면 컬럼명 순서는 상관 없다
*/
insert into dept01 (deptno, dname, loc) values (10,'SALES','NEWYORK');
insert into dept01 values (20,'RD','SEOUL');
 
/*
#오류 발생 경우
-컬럼명 수 > 괄호 안 컬럼 수
-컬럼명 수 < 괄호 안 컬럼 수
-컬럼명 잘못 기술
-데이터 타입 불일치
#NULL
#사용하는 경우: 컬럼값 모를 때
            값이 확정되지 않았을 때
#방법: 암시적
       명시적 ''
#null이 들어가는 경우는 거의 X
    -사용자 입력 잘못(처리 과정)
    -쿼리 이상 
*/
 
--# 서브쿼리로 데이터 삽입하기
--  컬럼 타입, 갯수 일치해야한다
 
 
insert into dept02
select * from dept
;
 
insert into dept03
select deptno, dname from dept
;
 
--#INSERT ALL: 다중 테이블에 다중 행 입력
-- 서브 쿼리의 결과를 조건 없이 여러 테이블에 입력
-- 서브쿼리의 컬럼명 = 입력 테이블의 컬럼명이어야 함
insert all
into emp_hir values(empno, ename, hiredate)
into emp_mgr values(empno, ename, mgr)
select empno, ename, hiredate, mgr
from emp
where deptno=20
;
 
--# WHEN: 조건에 의해 다중 테이블에 다중 행 입력하기
--  조건에 맞는 행만 추출하여 추가
INSERT ALL
WHEN HIREDATE > '1982/01/01' THEN
INTO EMP_HIR02 VALUES(EMPNO, ENAME, HIREDATE)
WHEN SAL > 2000 THEN
INTO EMP_SAL VALUES(EMPNO, ENAME, SAL)
SELECT EMPNO, ENAME, HIREDATE, SAL FROM EMP;
 
 
cs



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
31
32
33
34
35
36
37
38
39
/*
테이블의 내용을 수정하기 위한 UPDATE문
where절로 조건 지정하여 행을 선택- 선택하지 않으면 모든 행 수정
선택된 행에서 컬럼을 선택하여 update
변경 방법
-모든 행
-특정 컬럼
-서브 쿼리
*/
 
--# 테이블의 모든 행 변경
update emp01
set deptno=30
;
 
--# 특정 행만 변경
update emp01
set hiredate = sysdate
where substr(hiredate, 12)='87'
;
 
--# 2개 이상 컬럼값 변경
update emp01
set deptno=20, job='MANAGER'
where ename='SCOTT'
;
 
--# 서브쿼리를 이용한 데이터 수정
update dept01
set loc=(select loc from dept01 where deptno=40)
where deptno=20
;
 
--# 서브쿼리 두 개 이상의 컬럼에 대한 값 변경
update dept01
set (dname, loc)=(select dname, loc from dept where deptno=40)
where deptno=20
;
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
테이블의 불필요한 행을 삭제하기 위한 delete문
where절을 이용하여 조건 지정
*/
 
--# 모든 행 삭제
delete from dept01
;
 
--# 특정 행 삭제
delete from dept01
where deptno=30
;
 
cs


'Develop > DataBase' 카테고리의 다른 글

가상테이블인 뷰  (0) 2018.07.11
트랜잭션  (0) 2018.07.11
테이블 구조 생성, 변경 및 삭제하는 DDL  (0) 2018.07.11
Oracle 11g 다운로드  (0) 2018.07.10
Oracle 11g 설치  (0) 2018.07.10

댓글