SQL DML - INSERT, UPDATE, DELETE로 데이터 조작하기
선수학습(1개)
요약
데이터를 추가(INSERT), 수정(UPDATE), 삭제(DELETE)하는 SQL DML 명령어를 정보처리기사 실기 기출문제와 함께 학습합니다.
DML 핵심 정리
DML(Data Manipulation Language, 데이터 조작어)은 테이블(행과 열로 구성된 2차원 표)에 저장된 데이터를 추가·수정·삭제·조회하는 명령어입니다.
| 명령어 | 기본 구문 | 설명 |
|---|---|---|
| INSERT | INSERT INTO 테이블 VALUES (...) | 데이터 추가 |
| UPDATE | UPDATE 테이블 SET 컬럼=값 WHERE 조건 | 데이터 수정 |
| DELETE | DELETE FROM 테이블 WHERE 조건 | 데이터 삭제 |
| SELECT | SELECT 컬럼 FROM 테이블 WHERE 조건 | 데이터 조회 |
이 페이지에서는 테이블의 가로 한 줄을 행이라고 표현합니다. 교재나 시험 문제에 따라 튜플(Tuple) 또는 레코드(Record)라고도 부르며, 모두 같은 개념입니다. 자세한 내용은 관계 데이터 모델 구성요소 페이지를 참고하세요.
INSERT - 데이터 추가
INSERT INTO ... VALUES - 새 데이터 삽입
주의사항:
예시:
컬럼 목록 순서(학번, 이름, 학년, 과목)와 VALUES 순서가 정확히 대응해야 합니다. 순서가 어긋나면 값이 잘못된 컬럼에 들어갑니다.
INSERT INTO ... SELECT - 다른 테이블에서 복사
다른 테이블의 데이터를 조회하여 그대로 삽입합니다.
예시:
UPDATE - 데이터 수정
주의사항:
- WHERE 절을 생략하면 모든 행이 수정됩니다
- 여러 컬럼을 동시에 수정할 때는 쉼표(
,)로 구분합니다
예시:
WHERE 없이 UPDATE 실행 시:
수정 전 부서 테이블:
| 부서 | 주소 |
|---|---|
| 개발부 | 부산 |
| 영업부 | 대구 |
| 인사부 | 광주 |
수정 후 — 조건 없이 모든 행이 변경됩니다:
| 부서 | 주소 |
|---|---|
| 개발부 | 서울 |
| 영업부 | 서울 |
| 인사부 | 서울 |
DELETE - 데이터 삭제
주의사항:
- WHERE 절을 생략하면 모든 행이 삭제됩니다
- 테이블 구조(컬럼 정의)는 유지됩니다. DROP은 테이블 자체를 아예 없애는 것과 다릅니다
예시:
WHERE 없이 DELETE 실행 시:
삭제 전 학생 테이블:
| 학번 | 이름 | 학년 |
|---|---|---|
| 20250101 | 김민지 | 1 |
| 20250102 | 현진 | 2 |
| 20250103 | 이철수 | 3 |
삭제 후 — 조건 없이 모든 행이 삭제됩니다:
| 학번 | 이름 | 학년 |
|---|---|---|
| (없음) | (없음) | (없음) |
테이블 자체(컬럼 구조)는 남아 있으며, 데이터만 전부 사라집니다.
ON DELETE CASCADE
테이블 간에 외래키(다른 테이블의 기본키를 참조하는 컬럼)로 연결된 경우, 참조 무결성(외래키로 연결된 두 테이블의 참조 관계가 항상 유효해야 한다는 규칙)을 지키기 위해 부모 행을 삭제할 때 자식 행도 함께 처리해야 합니다. ON DELETE CASCADE를 지정하면, 참조 대상(부모 테이블의 행)이 삭제될 때 참조하는 데이터(자식 테이블의 행)도 자동으로 함께 삭제됩니다.
INT3는 정수형 데이터 타입이고, VARCHAR(50)4은 최대 50자까지 저장하는 가변 길이 문자열 타입입니다. REFERENCES 과목(과목코드)5는 이 컬럼이 과목 테이블의 과목코드 컬럼을 참조한다는 의미입니다.
ON DELETE CASCADE 동작 예시:
CASCADE 설정 전 — 과목 테이블에서 과목코드 200을 삭제하려 하면 성적 테이블이 참조하고 있어 오류가 발생합니다.
CASCADE 설정 후:
| 삭제 전 — 과목 테이블 | 삭제 전 — 성적 테이블 |
|---|---|
| 과목코드 100 (알고리즘) | 과목코드 100, 학번 20250101 |
| 과목코드 200 (자료구조) | 과목코드 200, 학번 20250102 |
| 삭제 후 — 과목 테이블 | 삭제 후 — 성적 테이블 |
|---|---|
| 과목코드 100 (알고리즘) | 과목코드 100, 학번 20250101 |
과목 테이블의 과목코드 200을 삭제하면, 성적 테이블에서 과목코드가 200인 행도 자동으로 삭제됩니다.
정보처리기사 실기 대비 문제
Footnotes
-
컬럼(Column): 테이블의 세로줄. 각 열이 하나의 데이터 항목(예: 이름, 학번)을 나타냅니다. 행(Row)은 테이블의 가로줄로, 한 건의 데이터 묶음입니다. ↩
-
문자열: 글자로 이루어진 값. SQL에서는
'김민지'처럼 작은따옴표로 감싸야 문자열로 인식합니다. 따옴표가 없으면 SQL이 컬럼명이나 키워드로 오해합니다. ↩ -
INT: 정수(소수점 없는 숫자)를 저장하는 데이터 타입. 예) 1, 100, -5 ↩
-
VARCHAR(50): 가변 길이 문자열 타입. 괄호 안의 숫자는 저장 가능한 최대 글자 수입니다. 예)
VARCHAR(50)→ 최대 50자 ↩ -
REFERENCES 테이블명(컬럼명): 이 컬럼이 다른 테이블의 특정 컬럼을 외래키로 참조한다는 선언입니다. ↩