본문으로 바로가기

DML / TCL

category ORACLE 2019. 11. 15. 14:45

DML(Data Manipulation Language)


  • 테이블에 새로운 데이터를 저장(INSERT) , 삭제(DELETE), 수정(UPDATE), 병합(MERGE)할때 사용하는 
    데이터 조작어 
  • data는 잘 못 반영될 우려가 있어 DML로 데이터 수정 후 완충 공간에 임시 반영한다.
    따라서 실제 데이터에 반영하기 위해서는 TCL로 반영해주어야한다.
SQL 종류 명령문

Data Manipulation Language

(DML : 데이터 조작어)

INSERT(데이터 입력)
UPDATE(데이터 수정)
DELETE(데이터 삭제)
MERGE(데이터 병합)

Transaction Control Language

(TCL : 트랜잭션 처리어)

COMMIT(트랜잭션 작업 반영)
ROLLBACK(트랜잭션 작업 취소)
SAVEPOINT(트램잭션내 책갈피 설정)

 

INSERT 문


단일행 INSERT문

  • 데이터를 저장하기 위한 데이터 조작어
  • 한 번에 하나의 row를 저장하는 단일행 INSERT방법과
    서브쿼리를 이용하여 여러줄의 row를 저장하는 다중 행 INSERT 방법이 있다.
// 컬럼명을 명시한 데이터 저장 방법
INSERT INTO 테이블명
(컬럼명1, 컬럼명2, ...)
VALUES(값1, 값2, ...);

//컬럼명을 작성하지 않은 데이터 저장 방법
//반드시 테이블의 컬럼순서와 일치되는 데이터를 입력해야한다.
INSERT INTO 테이블명
VALUES(값1, 값2, ...);

 

NULL 값 저장

  1. 묵시적 방법
  2. 명시적 방법

안배움

INSERT문 사용시 에러 발생 예

천천히 정리

 

 

복수행 INSERT문

아직 안배움

 

다중 테이블 다중행 INSERT 문 

아직 안 배움

 

 

UPDATE 문


  • 테이블에 저장된 데이터를 수정하기 위해서 사용됨.
  • 한번에 여러개의 row를 변경할 수 있음
UPDATE 테이블명
SET 컬럼명1=변경할값1, 컬럼명2=변경할값2,...
WHERE 컬럼명=값; //(PRIMARY KEY가 있는 컬럼을 적어준다.)

서브쿼리를 이용한 UPDATE문

안배움

 

 

DELETE 문


  • 테이블에 저장된 데이터를 삭제하기 위해서 사용됨.
  • 한번에 여러개의 행들을 삭제할 수 있다.
//모든 행 삭제하기
DELETE FROM 테이블명;


//조건에 일치하는 행 삭제하기
DELETE FROM 테이블명
WHERE 컬럼명=값;

서브쿼리를 이용한 DELETE문

안배움

 

 

MERGE 문


안배움

 

 

 

TCL(Transaction Control Language)


  • 논리적인 작업단위로서 분리될 수 없는 한개 이상의 데이터베이스 조작을 의미한다.
  • 오라클에서 발생되는 여러개의 작업들을 하나의 작업처럼 처리해야 되는 경우에 필요함.
  • 하나의 트랜젝션에는 하나이상의 SQL문이 포함될 수 있다.

 

COMMIT


COMMIT;
  • DML문에 의해서 실행되었으나 실제로 저장되지 않은 모든 데이터를
    데이터베이스에 저장하고 현재의 드랜잭션을 종료하는 명령어

 

ROLLBACK


ROLLBACK;

//SAVEPOINT까지 ROLLBACK하기
ROLLBACK TO SAVEPOINT 이름
  • 저장되지 않은 모든 데이터의 변경 사항을 취소하고
    현재의 드랜젝션을 종료하는 명령어
  • 트랜젝션으로 인한 하나의 묶음처리가 시작되기 이전의 상태로 복구되는 것 
  • SAVEPOINT를 지정한 경우 지정위치까지만 변경 사항을 취소 시킬 수도 있다.

 

SAVEPOINT


SAVEPOINT 이름;
  • 진행 중인 트랜젝션을 특정 이름으로 지정한는 명령어. (책갈피기능)
  • 지정된 이름에 해당하는 상태로 실행된 DML작업을 취소 할 수 있다.

'ORACLE' 카테고리의 다른 글

SQL 함수-그룹함수 / GROUP BY 절 / HAVING절  (0) 2019.11.15
SQL함수 / 단일행 함수  (0) 2019.11.15
DDL 명령어 / TABLE 객체 / ROWID / ROWNUM  (0) 2019.11.15
Data Base  (0) 2019.11.14
SELECT 문 / WHERE 절  (0) 2019.11.14