
오늘은 데이터베이스를 다루는 핵심 중의 핵심, DML(Data Manipulation Language) 을 정리해봤습니다.
실습 환경은 Oracle + DBeaver 기준입니다.
DML은 테이블 안에 있는 데이터를 조회·삽입·수정·삭제할 때 쓰는 SQL 구문들의 묶음이에요.
| 구문 | 역할 |
|---|---|
SELECT | 데이터 조회 |
INSERT | 데이터 삽입 |
UPDATE | 데이터 수정 |
DELETE | 데이터 삭제 |
가장 자주 쓰이는 구문입니다. 테이블에서 원하는 데이터를 꺼내올 때 사용해요.
-- 전체 컬럼 조회
SELECT * FROM employees;
-- 특정 컬럼만 조회
SELECT emp_id, emp_name, salary FROM employees;
WHERE 절을 이용하면 원하는 조건에 맞는 행만 걸러낼 수 있어요.
-- 급여가 3000 이상인 직원만 조회
SELECT emp_name, salary
FROM employees
WHERE salary >= 3000;
여러 조건을 조합할 때 사용합니다.
-- 부서가 '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';
특정 문자열이 포함되거나 특정 패턴으로 시작·끝나는 데이터를 찾을 때 사용해요.
| 와일드카드 | 의미 |
|---|---|
% | 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 '____';
테이블에 새로운 행을 추가할 때 사용합니다.
-- 컬럼 명시 후 삽입 (권장)
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을 해야 실제로 저장됩니다. 잊지 마세요!
기존에 있는 데이터를 수정할 때 사용합니다.
-- 특정 직원의 급여 수정
UPDATE employees
SET salary = 5000
WHERE emp_id = 1001;
-- 여러 컬럼 동시에 수정
UPDATE employees
SET salary = 4000,
dept = 'SALES'
WHERE emp_name = 'Lee Jiyeon';
COMMIT;
⚠️
WHERE절을 빠뜨리면 테이블 전체 데이터가 수정됩니다. 반드시 조건을 확인하세요!
테이블에서 특정 행을 삭제할 때 사용합니다.
-- 특정 직원 데이터 삭제
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 없으면 전체 삭제 주의