*SQL_Oracle*

DML <INSERT, UPDATE, DELETE>

깐부로부터 2021. 11. 11. 00:18

DML : DATA MANIPULATION LANGUAGE >

데이터 조작 언어

 

테이블에 새로운 데이터를 삽입(INSERT)하거나,

기존의 데이터를 수정(UPDATE)하거나

삭제(DELETE) 하는 구문

 

 

1. INSERT : 테이블에 행을 추가하는 구문

 

[표현법]

 

1) INSERT INTO 테이블명 VALUES(값, 값, 값, ........);

   => 해당 테이블에 모든 컬럼을 추가하고자 하는 값을

   내가 직접 제시해서 한 행을 INSERT 하고자 할 때 사용

 

주의할 점 : 컬럼 순번을 지켜서 VALUES 괄호 안에 나열해야 한다.

 

 

2) INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3, ......)VALUES(값1, 값2, 값3);
   => 해당 테이블에 특정 컬럼만 선택해서 그 컬럼에 추가할 값만 제시하고자 할 때 사용
   한 행 단위로 추가되기 때문에 선택이 안된 컬럼은 기본적으로 NULL 값이 들어감
   (기본값 DEFAULT이 저장되어있을 경우 기본값이 들어감)
    

주의사항 : NOT NULL 제약조건이 걸려있는 컬럼은 반드시 직접 값을 제시해야 함
(NOT NULL임에도 불구하고 기본값 DEFAULT이 지정되어있는 컬럼은 선택 안해도 됨)    

 

 

 

3) INSERT INTO 테이블명 (서브쿼리);
    => VALUES로 값을 기입하는 것 대신에 서브쿼리로 조회한 결과값을 INSERT하는 구문
    (여러 행을 INSERT 시킬 수 있다.)

 


2. INSERT ALL

두 개 이상의 테이블에 각각 INSERT할 때 사용

그 때 사용되는 서브쿼리가 동일한 경우

 

1) INSERT ALL

   INTO 테이블명1 VALUES(컬럼명, 컬럼명, 컬럼명..)
   INTO 테이블명2 VALUES(컬럼명, 컬럼명, 컬럼명...)
        서브쿼리;

 

 

 

 

2) INSERT ALL

    WEHN 조건1 THEN
             INTO 테이블명1 VALUES(컬럼명, 컬럼명, ..)
    WHEN 조건2 THEN
             INTO 테이블명2 VALUES(컬럼명, 컬럼명, ...)
        서브쿼리;


3. UPDATE

 

테이블에 기록된 기존의 데이터를 수정하는 구문

 

[표현법]

 

1) UPDATE 테이블명
   SET 컬럼명 = 바꿀값 => 여러 개의 컬럼 동시 변경 가능("," ".")

   WHERE 조건; => 생략 가능, 생략 시 전체 모든 행의 데이터가 다 변경

부서 'D9'이 '총무부'에서 '전략기획팀'으로 수정되었다.

 

 

 

 

 

2)  UPDATE 시에 서브쿼리를 사용
    서브쿼리를 수행한 결과값으로 UPDATE하겠다.
    
    UPDATE 테이블명
    SET 컬럼명 = (서브쿼리)
    WHERE 조건; => 생략 가능

 

 

※ UPDATE시 주의사항

- 제약 조건!!!!! 에 위배되면 안된다!!!


4. DELETE

 

테이블에 기록된 데이터를 삭제하는 구문

 

[표현법]

 

DELETE FROM 테이블명

WHERE 조건; => WHERE절은 생략가능, 생략 시 해당 테이블의 전체 행 삭제 

 

 

TRUNCATE

 : 테이블의 전체 행을 삭제할 때 사용하는 구문(절삭)
   DELETE보다 수행속도가 더 빠름!!
   별도의 조건 제시 불가, ROLLBACK이 불가능!  cf. ROLLBACK COMMIT되기 이전 단계로 돌려줌, (이전 상태로 복구)

되돌릴 수 없는 완전한 테이블 삭제

'*SQL_Oracle*' 카테고리의 다른 글

DCL < GRANT, REVOKE>  (0) 2021.11.11
DDL < ALTER, DROP >  (0) 2021.11.11
DDL <CREATE> SUBQUERY를 이용한 테이블생성  (0) 2021.11.10
DDL < CREATE >  (0) 2021.11.08
DML < SELECT > SUBQUERY(서브쿼리)  (0) 2021.11.06