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

방용환·2023년 5월 4일
0
post-thumbnail

1. DML (DATA MANIPULATION LANGUAGE)

1. DML (DATA MANIPULATION LANGUAGE)

  • DML (DATA MANIPULATION LANGUAGE) : 데이터 조작어
  • 테이블의 행에 대한 삽입, 변경, 삭제 기능을 제공하는 SQL 명령
  • DML 명령 실행 후 COMMIT(DML 명령의 적용) 또는 ROLLBACK 명령(DML 명령의 취소)을 실행하는 것을 권장

2. 제약조건

  • PK (PRIMARY KEY) : 중복된 컬럼값 저장을 방지하기 위한 제약조건
  • FK (FOREIGN KEY) : 자식테이블의 컬럼값으로 부모테이블의 컬럼값을 참조하여 저장하는 기능을 제공하는 제약조건

3. INSERT

  • INSERT : 테이블에 행을 삽입하는 SQL 명령
INSERT INTO 테이블명 VALUES(,, ...)
INSERT INTO 테이블명(컬럼명, 컬럼명, ...) VALUES(,, ...)
INSERT INTO 테이블명 SELECT 컬럼값, 컬럼값 FROM 테이블명
  • 테이블에 삽입될 행의 컬럼값은 테이블 속성에 맞게 차례대로 나열하여 저장되도록 작성
  • 테이블 속성의 순서대로 자료형에 맞는 컬럼값을 생략 없이 차례대로 나열해서 전달해야만 행 삽입 처리
  • 삽입행으로 전달될 컬럼값의 개수가 테이블의 컬럼 개수와 맞지 않을 경우 에러 발생
  • 삽입행으로 전달될 컬럼값의 자료형이 테이블의 컬럼의 자료형과 맞지 않을 경우 에러 발생
  • 삽입행으로 전달될 컬럼값이 테이블의 컬럼의 크기보다 큰 경우 에러 발생
  • 테이블 컬럼에 부여된 제약 조건을 위반하는 값을 전달할 경우 에러 발생

4. UPDATE

  • UPDATE : 테이블에 저장된 행의 컬럼값을 변결하는 SQL 명령
UPDATE 테이블명 SET 컬럼명=변경값, 컬럼명=변경값, ... [WHERE 조건식]
  • 테이블에 저장된 행에서 WHERE 조건식의 결과가 참인 행의 컬럼값 변경
  • WHERE를 생략할 경우 테이블에 저장된 모든 행의 컬럼값을 동일하게 변경 처리
  • WHERE 조건식에서 사용하는 비교컬럼은 PK 제약조건이 부여된 컬럼을 이용하여 변경하는 것을 권장
  • 일반적으로 PK 제약조건이 부여된 컬럼값을 변경하는 것은 비권장
  • 컬럼의 변경값은 컬럼의 자료형, 크기, 제약조건이 맞는 경우에만 변경 처리

5. DELETE

  • DELETE : 테이블에 저장된 행을 삭제하는 SQL 명령
DELETE 테이블명 FROM 테이블명 [WHERE 조건식]
  • 테이블에 저장된 행에서 WHERE 조건식의 결과가 참인 행 삭제
  • WHERE 생략한 경우 테이블에 저장된 모든 행 삭제
  • WHERE 조건식에서 사용하는 비교 컬럼은 PK 제약조건이 부여된 컬럼을 이용하여 삭제하는 것을 권장
  • 자식테이블에서 참조되는 부모테이블의 행은 FK 제약조건에 의해 삭제 불가

6. MERGE

  • MERGE : 원본테이블의 행을 검색하여 타겟테이블에 행으로 삽입하거나 타겟테이블에 저장된 행의 컬럼값을 변경하는 SQL 명령
MERGE INTO 타겟테이블명 USING 원본테이블명 ON (조건식)
	WHEN MATCHED THEN UPDATE SET 타겟컬럼명=원본컬럼명, ...
    	WHEN NOT MATCHED THEN INSERT(타켓컬럼명, ...) VALUES(원본컬럼명, ...)

0개의 댓글