Deeb
디비의 DB
Deeb
전체 방문자
오늘
어제
  • 분류 전체보기 (243)
    • Frontend (63)
      • HTML & CSS (27)
      • JavaScript (17)
      • jQuery (8)
      • React (6)
    • Backend (98)
      • Java (19)
      • JDBC (2)
      • Servlet & JSP (13)
      • Spring (17)
      • Project (0)
      • 개발 공부 (11)
      • 문제 풀이 (8)
      • Algorithm (1)
      • DataBase (0)
      • Oracle (18)
      • Error (8)
    • Knou (1)
    • Review (14)
    • TIL (33)
    • 삽질기록 (8)
    • deebtionary (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • css
  • HTML
  • 자바
  • 에러
  • 삭제
  • 책
  • DBMS
  • 리액트
  • 클래스
  • GIT
  • 정처기
  • 다형성
  • 공부
  • 기초
  • 배열
  • For
  • js
  • 한빛미디어
  • 후기
  • Java
  • 서평단
  • 정의
  • alter
  • 방통대
  • DB
  • 방송대
  • 함수
  • 추천
  • 2학기
  • CLASS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Deeb

디비의 DB

Backend/Oracle

[DB] DML (INSERT, UPDATE, MERGE, DELETE)

2021. 9. 25. 21:41
더보기

목차

1.  INSERT  

2. UPDATE

3. MERGE

4. DELETE

✍DML(Data Manipulation Language)

:  데이터 조작 언어
테이블에 값을 삽입하거나(INSERT), 수정하거나(UPDATE), 삭제(DELETE)하는 구문

COMMIT, ROLLBACK 할 때 주의❗

종류 

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

🚩 INSERT

테이블에 새로운 행을 추가하는 구문

 

1)  ⭐ INSERT INTO 테이블명 VALUES(데이터, 데이터, ...)⭐

: 테이블에 모든 컬럼에 대한 값을 추가할 때 사용하는데
 INSERT하고자 하는 컬럼이 모든 컬럼인 경우 컬럼명 생략 가능하다. 
INSERT INTO 테이블명
VALUES(데이터1, 데이터2, 데이터3);


결과)
1 행 이(가) 삽입되었습니다.

➡ 단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야 한다. 

 

2) ⭐ INSERT INTO 테이블명(컬럼명, 컬럼명, 컬럼명,...) ⭐

: 테이블에 내가 선택한 컬럼에 대한 값만 INSERT할 때 사용
선택 안 된 컬럼은 값이 NULL이 들어간다.
INSERT INTO 테이블명 (컬럼명, 컬럼명, 컬럼명)
VALUES(데이터1, 데이터2, 데이터3);


결과)
1 행 이(가) 삽입되었습니다. 

➡ 삽입하지 않은 컬럼의 값(데이터)는 NULL

 

3) 참고! INSERT시 VALUES 대신 서브쿼리 사용 가능

INSERT INTO 테이블명 ( 서브쿼리 )

 

4) 참고! INSERT ALL

INSERT 시 서브쿼리가 사용하는 테이블이 같은 경우 
두 개 이상의 테이블에 INSERT ALL 구문을 이용하여 한 번에 삽입 가능하다. 
단! 조건절이 같아야 한다. 
INSERT ALL
INTO 테이블명 VALUES (컬럼명, 컬럼명)
INTO 테이블명 VALUES (컬럼명, 컬럼명)
    SELECT 컬럼명, 컬럼명
    FROM  테이블명
    WHERE 조건 ;

➡ 하나의 조회결과로 여러 테이블에 INSERT한다.


🚩 UPDATE

테이블에 기록된 컬럼의 값을 수정하는 구문

작성법

UPDATE 테이블명 SET
컬럼명 = 바꿀값
[WHERE 컬럼명 비교연산자 비교값];

➡⭐  조건을 만족하는 모든 행이 업데이트 된다! 
 실수하면 원치 않는 행도 업데이트된다.

 

1) 조건절을 설정하지 않고 UPDATE 구문 실행 시 모든 행의 컬럼 값 변경

 

2) 여러 컬럼을 한번에 수정할 시 콤마(,)로 컬럼을 구분하면됨.

UPDATE 테이블명 SET
컬럼명 = '변경할 데이터 값' ,
컬럼명 = '변경할 데이터 값' ,
컬럼명 = '변경할 데이터 값'
WHERE 컬럼명 = 데이터;

 

3) UPDATE시에도 서브쿼리 사용 가능

작성법

UPDATE 테이블명
SET 컬럼명 = (서브쿼리)

 

4) 다중행 다중열 서브쿼리를 이용한 UPDATE문

예제1. EMPLOYEE2 테이블에서
A, B, C, D 사원의 급여와 보너스를
O 사원의 급여와 보너스와 같게 변경하는 UPDATE문을 작성하시오.


SELECT EMP_NAME, SALARY, BONUS
FROM EMPLOYEE2
WHERE EMP_NAME IN ('A', 'B', 'C', 'D');

UPDATE EMPLOYEE2 SET
(SALARY, BONUS) = ( SELECT  SALARY, BONUS
                    FROM EMPLOYEE2 
                    WHERE EMP_NAME = 'O')
WHERE EMP_NAME IN ('A', 'B', 'C', 'D');

👉
= 
: 단일행이니 = 이 가능 


🚩 MERGE(병합)  

구조가 같은 두 개의 테이블을 하나로 합치는 기능.

테이블에서 지정하는
조건의 값이 존재하면 UPDATE,
조건의 값이 없으면 INSERT된다. 

🚩 DELETE

테이블의 행을 삭제하는 구문

만약 WHERE 조건을 설정하지 않으면 모든 행이 다 삭제된다.

작성법

DELETE FROM 테이블명
WHERE 조건설정

결과)
N개 행 이(가) 삭제되었습니다.

➡ 조건절이 없으면 해당 테이블의 모든 데이터 삭제
➡ ROLLBACK으로 복구 가능

 

참고) DDL의 TRUNCATE와의 차이점 

TRUNCATE의 결과 

➡ Table 테이블명이(가) 잘렸습니다.

➡ ROLLBACK으로 복구 불가능

반응형
저작자표시 비영리 변경금지 (새창열림)

'Backend > Oracle' 카테고리의 다른 글

[DB] TCL(TRANSGACTION CONTROL LANGUAGE)  (0) 2021.09.27
[DB] DDL : CREATE, 제약조건 CHECK  (0) 2021.09.27
[DB] SUBQUERY  (0) 2021.09.23
[DB] JOIN  (0) 2021.09.23
[DB] SELECT문 해석 순서 | GROUP BY, ORDER BY,HAVING, 집계 함수  (0) 2021.09.21
    'Backend/Oracle' 카테고리의 다른 글
    • [DB] TCL(TRANSGACTION CONTROL LANGUAGE)
    • [DB] DDL : CREATE, 제약조건 CHECK
    • [DB] SUBQUERY
    • [DB] JOIN
    Deeb
    Deeb

    티스토리툴바