[SQL] DML의 모든 것
DML은 Data Manipulation Language의 약자로, DDL에서 정의한 대로 데이터를 입력하고(INSERT), 수정하고(UPDATE), 삭제하는(DELETE) 명령어이다.
SELECT를 DML이라고 하는 블로그나 게시글이 간혹 있는데, SELECT는 DML이 아니라 DQL(Data Query Language)로 따로 분류한다.
Aug 22, 2024
DML은 Data Manipulation Language의 약자로, DDL에서 정의한 대로 데이터를 입력하고(INSERT), 수정하고(UPDATE), 삭제하는(DELETE) 명령어이다.
SELECT를 DML이라고 하는 블로그나 게시글이 간혹 있는데, SELECT는 DML이 아니라 DQL(Data Query Language)로 따로 분류한다.
✅ 1. INSERT
테이블에 데이터를 입력하는 명령어이다.
만약 테이블의 특정 몇 개의 컬럼에 데이터를 넣고 싶다면 아래와 같이 작성하면 된다.
이때, 데이터가 입력되지 않은 컬럼은
NULL
값이 들어간다. 단, PK
혹은 NOT NULL
제약조건이 있는 컬럼은 NULL
값을 입력할 수 없으므로 에러가 발생한다.INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) VALUES (데이터1, 데이터2, ...);
만약 테이블 전체 컬럼에 대해 데이터를 넣고 싶다면, 컬럼명을 생략해도 된다.
INSERT INTO 테이블명 VALUES (전체 컬럼에 입력될 데이터 리스트);
✅ 2. UPDATE
이미 저장된 데이터를 수정할 때 사용하는 명령어이다.
단일 컬럼을 수정하고 싶을 땐 아래와 같이 한다.
단,
WHERE
절이 없다면 테이블의 모든 데이터가 수정되므로 주의해야 한다!!!UPDATE 테이블명 SET 컬럼명 = 새로운데이터 (WHERE 수정할 데이터에 대한 조건);
만약, 여러 컬럼에 대해 수정을 하고 싶다면
SET
절에 ,
로 이어서 작성할 수 있다.UPDATE 테이블명 SET 컬럼명1 = 데이터1, 컬럼명2 = 데이터2, ... (WHERE 수정할 데이터에 대한 조건);
✅ 3. DELETE
이미 저장된 데이터를 삭제할 때 사용하는 명령어이다.
DELETE
도 UPDATE
와 마찬가지로 WHERE
절이 없다면 전체 행이 삭제되므로 주의해야 한다 !!DELETE FROM 테이블명 (WHERE 삭제할 데이터에 대한 조건);
DELETE
는 COMMIT
전에 ROLLBACK
이 가능하다. 따라서, 실수를 했다면 되돌릴 수 있지만 그만큼 시스템에 부하가 발생한다.만약
WHERE
절 없이 테이블 전체 데이터를 삭제하고 싶다면, DELETE
가 아닌 TRUNCATE
가 더 적절할 수 있다.TRUNCATE
는 DELETE
와 다르게 별도의 로그를 남기지 않아 ROLLBACK
이 불가능한 대신, 시스템 부하가 적다. 만약 테이블의 전체 데이터를 삭제하는 것이 확실하다면 TRUNCATE
를 사용하자!TRUNCATE TABLE 테이블명;
✅ 4. MERGE
테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터에 대한 변경 작업을 한 번에 할 수 있도록 해주는 명령어이다.
MERGE
를 사용하면 하나의 쿼리문으로 INSERT
, UPDATE
, DELETE
작업을 수행할 수 있다.만약, 테이블에 데이터가 존재하지 않으면
INSERT
를 수행하고, 존재한다면 UPDATE
를 수행하고 싶을 때 아래와 같이 작성할 수 있다.MERGE INTO emp a USING dual // 단일 테이블 사용 시 ON (a.empno = 7788) WHEN MATCHED THEN UPDATE SET a.deptno = 20 WHEN NOT MATCHED THEN INSERT (a.empno, a.ename, a.deptno) VALUES (7788, 'SCOTT', 20);
Share article