-
[DB] SQL DML: INSERT, DELETE, UPDATE 문으로 데이터 조작하기DB 2025. 10. 19. 20:53
Data Manipulation Language in SQL
지난 포스팅에서 SELECT 문을 통해 데이터를 '조회'하는 방법에 대해서 알아봤고, 이번에는 SQL의 또 다른 핵심 기능인 데이터 조작(Data Manipulation) 을 알아보자.
SQL에서 데이터 조작이란, 테이블 안의 데이터를 추가(INSERT) 하고, 삭제(DELETE) 하며, 수정(UPDATE) 하는 것을 말한다. 이 명령어들을 합쳐서 흔히 DML(Data Manipulation Language) 이라고 부른다. 아 물론 'SELECT'도 DML에 속한다.
INSERT
INSERT 명령은 테이블에 새로운 행을 추가할 때 사용한다.
INSERT INTO <table_name> VALUES (value1, value2, value3, ...);예를 들어, EMPLOYEE 테이블에 새로운 직원을 추가하려면:INSERT INTO EMPLOYEE VALUES ('John', 'Doe', '123456789', '2000-01-01', 'M', 5000, 5);속성 순서와 값의 순서는 반드시 일치해야 한다.
1. 컬럼을 명시하는 방식
모든 컬럼에 값을 넣지 않아도 된다. 특정 컬럼만 지정할 수도 있다.
INSERT INTO EMPLOYEE (Fname, Lname, Ssn, Dno) VALUES ('Sarah', 'Kim', '888888888', 4);지정하지 않은 속성은 기본값(DEFAULT) 또는 NULL 로 자동 채워진다.
2. 여러 행 한 번에 추가하기
표준 SQL에서는 여러 행을 한 번에 추가할 수 있다.
INSERT INTO DEPARTMENT (Dname, Dnumber, Mgr_ssn, Mgr_start_date) VALUES ('Research', 5, '333445555', '2024-03-01'), ('Accounting', 6, '987654321', '2024-04-10');3. 서브쿼리를 이용한 INSERT
다른 테이블에서 데이터를 복사해서 삽입할 수도 있다.
INSERT INTO EMP_BACKUP SELECT * FROM EMPLOYEE WHERE Dno = 5;부서번호가 5번인 직원만 백업 테이블에 복사.
INSERT시 주의할 점
- NOT NULL 제약이 있는 컬럼은 반드시 값이 들어가야 한다.
- PRIMARY KEY는 중복될 수 없다.
- FOREIGN KEY는 참조 대상이 존재해야 한다.
(즉, referential integrity가 자동 검증됨)
DELETE
DELETE 문은 특정 조건을 만족하는 행을 제거한다.
DELETE FROM <table_name> WHERE <condition>;예를 들어,
DELETE FROM EMPLOYEE WHERE Dno = 5;부서번호가 5인 직원들을 모두 삭제한다.
1. WHERE 절이 없을 경우
DELETE FROM EMPLOYEE;EMPLOYEE 테이블의 모든 행이 삭제된다. WHERE 절이 없으면 전체 삭제이므로 신중히 써야 한다.
(테이블 구조는 남고, 데이터만 사라짐)2. 참조 무결성(Referential Integrity)
외래키(FK)가 연결된 테이블에서 데이터를 삭제할 때는 참조 무결성 규칙(Referencial integrity constraints)이 적용된다.
- CASCADE: 참조하는 행도 함께 삭제
- SET NULL: 참조하는 외래키를 NULL로 설정
- 기본값: 위반 시 삭제 거부 (REJECT)
DELETE FROM DEPARTMENT WHERE Dnumber = 5;만약 EMPLOYEE가 DEPARTMENT를 참조한다면, 부서 5를 참조하는 직원이 있을 경우 삭제가 거부된다.
(ON DELETE CASCADE 옵션을 줬다면 연쇄 삭제)3. DROP과 DELETE의 차이
DELETE 행(데이터) 테이블의 데이터만 삭제 DROP 테이블 전체 테이블 구조 자체를 삭제
UPDATE
UPDATE 문은 기존 행의 특정 속성 값을 변경할 때 사용한다.
UPDATE <table_name> SET <column1> = <value1>, <column2> = <value2> WHERE <condition>;예시
UPDATE PROJECT SET Plocation = 'Bellaire', Dnum = 5 WHERE Pnumber = 10;프로젝트 번호 10번의 위치를 ‘Bellaire’, 부서 번호를 5로 변경.
1. WHERE 절을 생략하면?
UPDATE EMPLOYEE SET Salary = Salary * 1.1;전체 직원의 급여를 10% 인상. (WHERE 절이 없으므로 모든 행에 적용됨)
2. 다른 테이블의 데이터로 수정하기
UPDATE EMPLOYEE SET Salary = Salary * 1.05 WHERE Dno IN ( SELECT Dnumber FROM DEPARTMENT WHERE Dname = 'Research' );Research 부서 직원들의 급여를 5% 인상.
UPDATE 시 주의할 점
- WHERE 조건을 잘못 지정하면 전 행이 변경될 수 있다.
- PRIMARY KEY나 FOREIGN KEY 값 변경 시 참조 무결성 제약이 함께 검사된다.
DML 정리
INSERT 새로운 데이터 행을 추가 INSERT INTO EMPLOYEE VALUES ('John', 'Doe', ...) DELETE 조건에 맞는 행을 삭제 DELETE FROM EMPLOYEE WHERE Dno = 5; UPDATE 특정 속성 값 수정 UPDATE EMPLOYEE SET Salary = 5000 WHERE Ssn = '123456789'; SELECT 데이터 조회 SELECT * FROM EMPLOYEE; 출처: 경북대학교 이천희 교수님, “데이터베이스” 강의 자료
'DB' 카테고리의 다른 글
[DB] SELECT 문으로 데이터 조회하기 (Basic Retrieval Queries in SQL) (0) 2025.10.18 [DB] SQL DDL 핵심: CREATE TABLE, 데이터 타입, 제약조건 (0) 2025.10.18 [DB] ER-to-Relational Mapping 알고리즘 (1) 2025.10.14 [DB] 관계형 모델과 무결성 제약조건 (1) 2025.10.13 [DB] ER 모델과 데이터베이스 설계 (0) 2025.09.26