Digking's cave

DML 문장 본문

기초/Oracle

DML 문장

디깅 2019. 4. 24. 18:03
728x90

--1. 주제 : DML 문장
--        DML(Data Manipulation Language)
--        INSERT 문
--        UPDATE 문
--        DELETE 문
--        데이터를 입력, 수정, 삭제하는 명령어이다.
--        DML은 이전의 SELECT 문과 다르게 데이터의 내용을 변경하는 작업을 수행하므로
--        이전보다 훨씬 주의 깊게 계획되고 실행되어야 한다.
--        이렇게 DML 작업은 이전과는 달리 안전한 작업과정의 결과가 요구되므로써 
--        이를 위해 오라클을 트랜잭션이라는 단위로 관리한다.\
--
--2. 용법 
--INSERT INTO 테이블 [(컬럼, 컬럼, ...)]
--VALUES (값, 값, ...);
--
--a) INSERT문은 하나의 행을 삽입한다
--b) 컬럼 리스트와 VALUES절의 값은 1:1로 대응된다
--c) 테이블의 모든 컬럼에 값을 입력하는 경우
--   컬럼 리스트를 생략할 수 있다.
--d) 컬럼 생략시 VALUES절에 기술하는 값의 순서는 DESC 명령으로 확인된 테이블의 컬럼 순서와 일치해야 한다
--e) 입력되는 값이 숫자가 아닌 경우 반드시 단일 인용부호를 사용
--f) INSERT문장에서 생략된 컬럼은 null값이 입력된다.
--g) 명시적인 널 값은 null을 기술한다.
--h) 값 대신에 DEFAULT를 기술하면 테이블에 정의된 DEFAULT값이 입력된다.
--
--UPDATE 테이블
--SET 컬럼 = 값, 컬럼 = 값, ...
--[WHERE 조건];
--
--a) 컬럼의 값을 수정한다
--b) WHERE절을 생략하면 모든 행의 지정된 컬럼 값이 수정된다
--c) 여러 칼럼의 값을 동시에 수정할 수 있다.
--d) 값 대신에 DEFAULT 를 기술하면 테이블에 정의된 DEFAULT 값으로 변경된다
--
--DELETE FROM 테이블
--[WHERE 조건];
--
--a) 행단위로 데이터를 삭제한다
--b) 조건이 없는 경우 테이블의 모든 행을 삭제한다
--c) 테이블을 삭제해도 테이블의 물리적인 구조는 변하지 않는다
--   (바로 변경되지 않고 COMMIT 명령을 내리면 변경된다)
--
--*DCL(Data Control Language)
--COMMIT
--a) 작업을 완료한다(트랜잭션을 완료한다)
--b) 모든 DML문장을 수행한 후 작업을 완료할 때 반드시 필요하다
--c) 커밋 명령을 내리지 않으면 오라클은 마치 변경된 것처럼 데이터를 제공하지만 
--   재부팅 후에는 원래 데이터로 변경된다.
--   
--ROLLBACK
--a) 작업을 취소한다
--b) 모든 DML 문장을 수행한 후 작업을 취소할 때 반드시 필요하다

--dept테이블의 데이터를 모두 삭제 후 ROLLBACK하기
SELECT *
FROM dept;

DELETE FROM dept;

ROLLBACK;

--emp와 dept 테이블의 모든 데이터를 삭제
SELECT * FROM emp;
SELECT * FROM dept;

DELETE FROM emp;
DELETE FROM dept;

ROLLBACK;

DELETE FROM emp;
DELETE FROM dept;
COMMIT;

--emp테이블에 값을 입력한다
eno  ename job  mgr  hdate       sal  comm  dno
------------------------------------------------
1001 김연아 개발      1991-02-01  4500 520   10
1002 김주란 개발      1992-03-03  4100 330   20
1003 양선호 개발      1995-02-01  4300       30
1004 신호연 개발      1992-09-05  4210 100   40

ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
DESC emp;
INSERT INTO emp (eno, ename, job, mgr, hdate, sal, comm, dno)
VALUES ('1001','김연아','개발',null,'1991-02-01',4500,520,10);

INSERT INTO emp (eno, ename, job, mgr, hdate, sal, comm, dno)
VALUES ('1002','김주란','개발',null,'1992-03-03',4100,330,20);

INSERT INTO emp (eno, ename, job, mgr, hdate, sal, comm, dno)
VALUES ('1003','양선호','개발',null,'1995-02-01',4300,null,30);

INSERT INTO emp (eno, ename, job, mgr, hdate, sal, comm, dno)
VALUES ('1004','신호연','개발',null,'1992-09-05',4210,100,40);

SELECT * FROM emp;
COMMIT;

반응형

'기초 > Oracle' 카테고리의 다른 글

0424 -SELECT 문제  (0) 2019.04.24
다중 열 서브 쿼리  (0) 2019.04.24
다중행 서브 쿼리  (0) 2019.04.24
서브 쿼리  (0) 2019.04.24
함수 - 5.그룹함수와 HAVING절  (0) 2019.04.24