[SQL] DML의 모든 것

DML은 Data Manipulation Language의 약자로, DDL에서 정의한 대로 데이터를 입력하고(INSERT), 수정하고(UPDATE), 삭제하는(DELETE) 명령어이다. SELECT를 DML이라고 하는 블로그나 게시글이 간혹 있는데, SELECT는 DML이 아니라 DQL(Data Query Language)로 따로 분류한다.
Hi's avatar
Aug 22, 2024
[SQL] DML의 모든 것

💡
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

💡
이미 저장된 데이터를 삭제할 때 사용하는 명령어이다.
 
DELETEUPDATE와 마찬가지로 WHERE 절이 없다면 전체 행이 삭제되므로 주의해야 한다 !!
 
DELETE FROM 테이블명 (WHERE 삭제할 데이터에 대한 조건);
 
DELETECOMMIT 전에 ROLLBACK이 가능하다. 따라서, 실수를 했다면 되돌릴 수 있지만 그만큼 시스템에 부하가 발생한다.
 
만약 WHERE 절 없이 테이블 전체 데이터를 삭제하고 싶다면, DELETE가 아닌 TRUNCATE가 더 적절할 수 있다.
 
TRUNCATEDELETE와 다르게 별도의 로그를 남기지 않아 ROLLBACK이 불가능한 대신, 시스템 부하가 적다. 만약 테이블의 전체 데이터를 삭제하는 것이 확실하다면 TRUNCATE를 사용하자!
 
TRUNCATE TABLE 테이블명;
 

✅ 4. MERGE

💡
테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터에 대한 변경 작업을 한 번에 할 수 있도록 해주는 명령어이다.
notion image
 
 
 
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
RSSPowered by inblog