DML 문장은 다음의 경우 실행됩니다.
- 테이블에 새로운 행을 추가할 때
- 테이블에 있는 기존의 행을 변경할 때
- 테이블로부터 기존의 행을 제거할 때
DML(Data Manilpuation Language)은 SQL 의 핵심 부분입니다. 데이터베이스에 데이터를 추가, 갱신 또는 삭제하고자 한다면 DML 문장을 실행합니다.
DML 문은 다음 3가지 구문을 포함합니다.
- 새로운 행을 데이터 베이스에 추가하는 INSERT 문
- 기존 행을 수정하기 위한 UPDATE 문
- 기존 행을 삭제하기 위한 DELETE 문
DML 구문의 실행을 완전히 보장해야 할 필요가 있습니다. 이를 위해 트랜잭션이 필요합니다.
작업의 논리적인 단위 형태인 DML 문장의 모음을 트랜잭션이라고 합니다.
예를 들어 은행 데이터베이스를 고려해 봅시다. 은행 고객이 저축성 예금을 당좌 예금으로 전달할때, 트랜잭션은 세가지의 분리되는 작업으로 구성됩니다.
-저축성 예금을 감소시킨다.
- 당좌 예금을 증가시킨다.
-트랜잭션 일지에 트랜잭션을 기록한다.
오라클 서버는 올바르게 예금을 유지하기 위해 세가지 SQL 문장 모두가 수행되도록 해야합니다.
누군가 실행시에 트랜잭션의 문장 중의 하나를 막아 버린다면, 그 트랜잭션 내의 다른 문장은 취소되어야 합니다.
예를 들며 저축성 예금을 감소시키는 것이 성공한 다음 당좌예금을 증가 시키는 도중 에러가 발생하여 당좌 예금의 증가가 실패했다면 이미 실행된 저축성 예금의 감소를 취소해야합니다.
- 각각의 열에 대한 값을 포함하는 새로운 행을 삽입합니다.
- 테이블에 있는 열의 디폴트 순서로 값을 나열합니다.
- INSERT 절에서 열을 선탠적으로 나열합니다.
- 문자와 날짜 값은 단일 따옴표 내에 둡니다.
다음 구문은 DEPARTMENTS 테이블에 새로운 행을 추가합니다. 새로 추가되는 부서의 아이디는 280, 부서이름은 Data Analytics, 매니저 아이디는 null, 지역 아이디는 1700(미국 시카고)입니다.
새로운 행을 삽입할 때 열을 지정하지 않을 경우 values 절에는 테이블을 정희할 때의 순서와 타입에 맞게 모든 열들에 대한 입력정보가 포함되어 있어야합니다.
다음 작업을 위해 ROLLBACK; 명령으로 삽입했던 행의 저장을 취소하세요.
Null을 포함하는 열이 있을 경우 다음과 같이 선택적으로 열을 지정할수 있습니다. 위 구문과 아래 구문은 같습니다.
위 구문이 실행되었다면 다음 구문을 실행할 필요는 없습니다.
- 서브쿼리로 INSERT 문장을 작성합니다.
- VALUES 절을 사용하지 않습니다.
- 서브쿼리의 열 수와 INSERT 절의 열 수는 일치해야 합니다.
기존의 테이블로부터 값을 가져와 테이블에 추가하기 위해서 INSERT 문장을 사용할 수 있습니다.
VALUES 절에서 서브쿼리를 사용할 수 있습니다.
-SELECT_SUB-QUEARY : 행을 리턴할 서브쿼리입니다. INSERT절의 열 목록에서 열의 개수와 데이터타입은 서브쿼리에 있는 값의 개수와 그들의 데이터타입과 일치해야합니다.
다음 구문은 EMPLOYEES 테이블로부터 SELECT 구문으로 조회한 결과를 MANAGERS 테이블에 저장합니다.
MANAGERS 테이블에 저장한 데이터는 직무가 매니저(PU_MAN,ST_MAN, SA_MAN,MK_MAN)인 사원들입니다.
'DB' 카테고리의 다른 글
뷰(View) (0) | 2022.01.05 |
---|---|
DML-1 (0) | 2022.01.04 |
서브쿼리 (0) | 2022.01.01 |
SQL-JOIN이란? (0) | 2021.12.31 |
SQL - 다양한 함수(문자,숫자 날짜) (0) | 2021.12.28 |