DML(Data Manipulation Language)
✒️ 2025-05-28 17:30 내용 수정
데이터베이스의 데이터를 추가, 수정, 삭제하기 위한 명령어
- 참고 자료 : 위키백과 데이터 조작 언어
- 데이터베이스의 데이터 생성, 수정, 삭제 등에 관련된 QUERY문
- CRUD : Create(생성) Read(읽기) Update(수정) Delete(삭제)
- Resources/DataBase/RDBMS/Oracle/Data 수정에 상세 예제 참고
1. INSERT
- 데이터베이스의 데이터를 추가한다.
- 주의 사항 : 제약 조건을 지켜야 하며, FK(외래키)로 정해진 속성은 참조하는 PK(고유키)에 들어있는 속성만 사용할 수 있다.
- 만약 FK(외래키)가 존재하는 테이블(자식 테이블)의 데이터를 추가할 때는 참조할 PK(고유키)가 있는 테이블(부모 테이블)의 데이터를 추가해야만 자식 테이블에 데이터를 추가할 수 있다.
- DEFAULT 값을 넣으려면 COLUMN을 명시한 형태에서 사용해야 한다.
INSERT INTO 테이블명(컬럼명1, 컬럼명2,...) VALUES(값1, 값2,...); -- DEFAULT 값도 넣을 수 있음
INSERT INTO 테이블명 VALUES(값1, 값2,...); -- 무조건 컬럼 개수만큼 값을 넣어야 함
2. UPDATE
- 데이터베이스의 데이터를 수정한다.
- WHERE 조건절이 없으면 컬럼 전체의 값이 변경되므로 주의해야 한다.
UPDATE 테이블명 SET 기존컬럼명 = 새로운값; -- 해당 컬럼 전체 변경
UPDATE 테이블명 SET 기존컬럼명 = 새로운값 WHERE 조건식; -- 조건에 맞는 컬럼만 변경
-
MySQL에선 UPDATE나 DELETE를 사용할 때 WHERE 절이 없거나, KEY Column 외의 Column을 사용하여 비교할 때 Safe mode error가 발생한다. Safe mode를 해제하면 위의 내용을 사용할 수 있다.
-
방법 1 : SQL문 작성
-- MySQL safe mode 해제
SET SQL_SAFE_UPDATES = 0;
- 방법 2 : Edit - Preference - SQL Editor - Safe Updates 체크 해제


3. DELETE
- 데이터베이스의 특정 레코드를 삭제한다.
- 조건을 지정하면 조건에 맞는 행을 제거한다. (다른 데이터가 삭제 되지 않도록 주의가 필요함)
- 주의 사항 : 만약 테이블의 PK(고유키)를 다른 테이블에서 FK(외래키)로 참조하고 있다면, FK가 있는 테이블(자식 테이블)의 데이터를 먼저 삭제해야 참조된 테이블(부모)의 데이터를 지울 수 있다.
DELETE FROM 테이블명 WHERE 조건식;
- 만약 PK와 FK관계로 연결된 테이블에서 부모 테이블의 데이터를 제거할 때 자식 테이블의 데이터도 제거하려면 FK 제약 조건 추가 시
ON DELETE CASCADE를 추가한다.
-- 부모 테이블
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 자식 테이블
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
value VARCHAR(100),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
);
DELETE FROM parent WHERE id = 1; -- 자식 테이블에서 parent_id = 1인 데이터도 함께 제거