[Oracle] DML 데이터 조작어

hi·2022년 1월 7일
0

데이터 조작어 (DML : Data Manipulation Language)

  • 테이블에 새로운 데이터 삽입, 기존 데이터 수정, 삭제하는 명령어의 집합
  1. INSERT : 데이터 입력
  2. UPDATE : 데이터 수정
  3. DELETE : 데이터 삭제

1. insert into

  • 데이터 입력
  • 문자(char, varchar2)와 날짜(date)는 ' ' 를 사용
insert into 테이블명
values (컬럼값1, 컬럼값2 ... );
  • into절 뒤에 컬럼명 나열 가능
ex)

insert into dept (dno, loc, dname)  --컬럼명 나열시
values(20, 'DALLAS', 'RESEARCH');   --컬럼값의 개수와 동일해야함
  • null값 입력시 null 혹은 문자나 날짜 타입은 ' ' 공백 문자열 작성 가능
  • 날짜 데이터 입력시 'YYYY/MM/DD' 형식으로 입력
  • 서브 쿼리로 다른 테이블 데이터 복사 가능
insert into 테이블명 (컬럼명...(생략가능))
서브쿼리 

ex)

insert into dept_copy
select * from dept;

2. update

  • 데이터 수정
  • where절 생략시 모든 행 수정
update 테이블명
set 컬럼명=값 , 컬럼명2=값2 ...
where 조건;

ex) 

update dept
set dname='PROGRAMING'
where dno=10;
  • set절에서 서브 쿼리 기술시 다른 테이블에 저장된 데이터로 해당 컬럼 값 변경
  • set절에서 서브 쿼리 여러개 기술 가능. 콤마 사용하여 구분함

3. delete

  • 데이터 삭제
  • where절 생략시 모든 행 삭제
  • where절 서브 쿼리 기술 가능
delete from 테이블명   -- from 생략 가능
where 조건;

ex)

delete dept_copy
where dno=10;

4. 트랜잭션 관리

  • transaction
  • 데이터 처리에서 논리적으로 하나의 작업 단위 의미
  • All - or - Nothing 방식
    : 여러개의 명령어 집합이 정상적으로 처리되면 정상 종료
    : 하나의 명령어라도 잘못되었다면 전체 취소
    => 데이터 일관성 유지, 안정적으로 데이터 복구

1) commit

  • 모든 작업들을 정상적으로 처리하겠다고 확정하는 명령어
  • 변경된 내용을 모두 영구 저장

2) rollback

  • 처리 과정에서 발생한 변경 사항을 취소하는 명령어
  • 이전의 상태로 되돌린다

🖐 savepoint도 함께 사용하자

ex)

-10번 부서만 삭제 후 -> savepoint로 이 지점을 d10 이름으로 저장
delete from dept_copy where dno=10;
savepoint d10;

-20번 부서만 삭제
delete from dept_copy where dno=20;

-30번 부서만 삭제
delete from dept_copy where dno=30;

-d10 지점으로 되돌림 
rollback to d10;

< DDL , DML 차이점 >

0개의 댓글