Oracle DML 완전 정복 — SELECT, INSERT, UPDATE, DELETE

scminy0527·2026년 3월 12일
post-thumbnail

오늘은 데이터베이스를 다루는 핵심 중의 핵심, DML(Data Manipulation Language) 을 정리해봤습니다.
실습 환경은 Oracle + DBeaver 기준입니다.


DML이 뭔데?

DML은 테이블 안에 있는 데이터를 조회·삽입·수정·삭제할 때 쓰는 SQL 구문들의 묶음이에요.

구문역할
SELECT데이터 조회
INSERT데이터 삽입
UPDATE데이터 수정
DELETE데이터 삭제

1. SELECT — 데이터 조회

가장 자주 쓰이는 구문입니다. 테이블에서 원하는 데이터를 꺼내올 때 사용해요.

기본 조회

-- 전체 컬럼 조회
SELECT * FROM employees;

-- 특정 컬럼만 조회
SELECT emp_id, emp_name, salary FROM employees;

WHERE — 조건 필터링

WHERE 절을 이용하면 원하는 조건에 맞는 행만 걸러낼 수 있어요.

-- 급여가 3000 이상인 직원만 조회
SELECT emp_name, salary
FROM employees
WHERE salary >= 3000;

AND / OR / NOT — 복합 조건

여러 조건을 조합할 때 사용합니다.

-- 부서가 'IT'이고 급여가 4000 이상인 직원
SELECT emp_name, dept, salary
FROM employees
WHERE dept = 'IT'
  AND salary >= 4000;

-- 부서가 'HR' 이거나 'FINANCE'인 직원
SELECT emp_name, dept
FROM employees
WHERE dept = 'HR'
   OR dept = 'FINANCE';

-- 부서가 'IT'가 아닌 직원
SELECT emp_name, dept
FROM employees
WHERE NOT dept = 'IT';

LIKE — 문자열 패턴 검색

특정 문자열이 포함되거나 특정 패턴으로 시작·끝나는 데이터를 찾을 때 사용해요.

와일드카드의미
%0개 이상의 임의 문자
_정확히 1개의 임의 문자
-- 이름이 'Kim'으로 시작하는 직원
SELECT emp_name
FROM employees
WHERE emp_name LIKE 'Kim%';

-- 이름에 'an'이 포함된 직원
SELECT emp_name
FROM employees
WHERE emp_name LIKE '%an%';

-- 이름이 정확히 4글자인 직원
SELECT emp_name
FROM employees
WHERE emp_name LIKE '____';

2. INSERT — 데이터 삽입

테이블에 새로운 행을 추가할 때 사용합니다.

-- 컬럼 명시 후 삽입 (권장)
INSERT INTO employees (emp_id, emp_name, dept, salary)
VALUES (1001, 'Kim Minsu', 'IT', 4500);

-- 여러 행 한 번에 삽입 (Oracle은 INSERT ALL 사용)
INSERT ALL
  INTO employees (emp_id, emp_name, dept, salary) VALUES (1002, 'Lee Jiyeon', 'HR', 3200)
  INTO employees (emp_id, emp_name, dept, salary) VALUES (1003, 'Park Junho', 'FINANCE', 3800)
SELECT * FROM dual;

-- 삽입 후 반드시 커밋!
COMMIT;

💡 Oracle에서는 INSERT 후 COMMIT을 해야 실제로 저장됩니다. 잊지 마세요!


3. UPDATE — 데이터 수정

기존에 있는 데이터를 수정할 때 사용합니다.

-- 특정 직원의 급여 수정
UPDATE employees
SET salary = 5000
WHERE emp_id = 1001;

-- 여러 컬럼 동시에 수정
UPDATE employees
SET salary = 4000,
    dept = 'SALES'
WHERE emp_name = 'Lee Jiyeon';

COMMIT;

⚠️ WHERE 절을 빠뜨리면 테이블 전체 데이터가 수정됩니다. 반드시 조건을 확인하세요!


4. DELETE — 데이터 삭제

테이블에서 특정 행을 삭제할 때 사용합니다.

-- 특정 직원 데이터 삭제
DELETE FROM employees
WHERE emp_id = 1003;

-- 특정 부서 전체 삭제
DELETE FROM employees
WHERE dept = 'FINANCE';

COMMIT;

⚠️ WHERE 절 없이 DELETE FROM employees;를 실행하면 모든 데이터가 삭제됩니다. 항상 조건을 먼저 확인하는 습관을 들이세요!


🔁 실전 예시 — 한 사이클 돌아보기

-- 1. 데이터 삽입
INSERT INTO employees (emp_id, emp_name, dept, salary)
VALUES (1004, 'Choi Soyeon', 'IT', 3500);
COMMIT;

-- 2. 삽입된 데이터 확인
SELECT * FROM employees WHERE emp_id = 1004;

-- 3. 급여 수정
UPDATE employees
SET salary = 4200
WHERE emp_id = 1004;
COMMIT;

-- 4. 수정 확인
SELECT emp_name, salary FROM employees WHERE emp_id = 1004;

-- 5. 삭제
DELETE FROM employees WHERE emp_id = 1004;
COMMIT;

-- 6. 삭제 확인
SELECT * FROM employees WHERE emp_id = 1004; -- 결과 없음

✅ 정리

  • SELECT : 조회 / WHERE, AND, OR, NOT, LIKE로 조건 세분화 가능
  • INSERT : 새 데이터 추가, Oracle은 COMMIT 필수
  • UPDATE : 기존 데이터 수정, WHERE 없으면 전체 수정 주의
  • DELETE : 데이터 삭제, WHERE 없으면 전체 삭제 주의
profile
비전공자에서 시작해 Flutter로 실서비스를 만들었고, 더 깊은 개발을 향해 계속 성장 중인 개발자

0개의 댓글