inblog logo
|
DailyCoding
    SQLD

    2-3-1. DML

    박은서's avatar
    박은서
    Mar 02, 2026
    2-3-1. DML
    Contents
    1. INSERT1️⃣ 단일행 INSERT 문2️⃣ 서브 쿼리를 이용한 다중행 INSERT 문2. UPDATE1️⃣ UPDATE 기초 개념3. DELETE1️⃣ DELETE 기초 개념4. MERGE1️⃣ MERGE 기초 개념
    💡
    DML (데이터 조작어 : Data Manipulation Language)

    1. INSERT

    1️⃣ 단일행 INSERT 문

    1) INSERT 문

    • 데이터베이스 테이블에 새로운 데이터를 추가할 때 사용하는 SQL 명령어
    • 데이터 삽입 시 테이블의 모든 칼럼에 값을 지정하거나 특정 칼럼에만 값을 지정할 수 있음

    2) INSERT 문 형식

    • 기본 형식
      • INSERT INTO 테이블명 (칼럼1, 칼럼2, ...) VALUES (값1, 값2, ...);
    • 모든 칼럼에 값을 삽입할 경우 칼럼 이름 생략 가능
      • INSERT INTO 테이블명 VALUES (값1, 값2, ...);

    3) INSERT 문 예

    • EMP 테이블에 새로운 직원 데이터 추가
      • INSERT INTO EMP (EMPNO, ENAME, JOB, HIREDATE) VALUES (101, 'YONGMOON', 'MANAGER', '2023-08-01');
    • 모든 칼럼을 지정하지 않고 삽입
      • INSERT INTO EMP VALUES (102, 'YONGMOON2', 'CLERK', '7902', '2023-08-03', 2000, NULL, 20);

    2️⃣ 서브 쿼리를 이용한 다중행 INSERT 문

    1) 다중행 INSERT 문

    • 다른 테이블에서 데이터를 추출해 새로운 테이블에 삽입해야 할 경우, INSERT INTO 다음에 서브쿼리 구문을 사용하면 됨
    • 많은 데이터를 일괄 삽입할 때 유용
    • 서브쿼리를 이용하여 다른 테이블의 데이터를 통째로 옮기는 개념

    2) 서브 쿼리를 이용한 다중행 INSERT 문 예

    • EMP_MNG 테이블 생성
      • CREATE TABLE EMP_MNG ( EMPNO NUMBER(4,0), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4,0), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2,0) ); SELECT * FROM EMP_MNG;
    • 서브쿼리
      • SELECT EMPNO, ENAME, JOB, HIREDATE, DEPTNO FROM EMP WHERE DEPTNO = 20;
    • 서브 쿼리를 이용한 다중행 INSERT 문
      • INSERT INTO EMP_MNG (EMPNO, ENAME, JOB, HIREDATE, DEPTNO) SELECT EMPNO, ENAME, JOB, HIREDATE, DEPTNO FROM EMP WHERE DEPTNO = 20;

    2. UPDATE

    1️⃣ UPDATE 기초 개념

    1) UPDATE 문

    • SQL에서 테이블에 이미 존재하는 데이터를 수정하는 데 사용되는 명령어
    • 특정 조건을 만족하는 행의 데이터를 변경할 수 있음
    • 조건을 지정하지 않으면 테이블의 모든 행이 업데이트됨

    2) UPDATE 문 기본 형식

    UPDATE 테이블명 SET 칼럼1 = 값1, 칼럼2 = 값2, ... WHERE 조건;

    3) UPDATE 문 예

    • 여러 칼럼을 동시에 UPDATE
      • UPDATE EMP SET SAL = 200, COMM = 300 WHERE ENAME = 'YONGMOON';
    • 서브쿼리를 이용한 UPDATE
      • ‘YONGMOON’의 SAL 값을 DEPTNO가 10인 부서의 SAL 평균값으로 UPDATE
      • UPDATE EMP SET SAL = (SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 10) WHERE ENAME = 'YONGMOON';

    3. DELETE

    1️⃣ DELETE 기초 개념

    1) DELETE 문

    • SQL에서 테이블의 특정 행을 삭제할 때 사용하는 명령어
    • 특정 조건에 맞는 행을 삭제
    • WHERE 절을 사용하지 않으면 테이블의 모든 행 삭제됨
    • DELETE 문을 사용할 때는 주의가 필요
    • 자동 커밋이 발생하지 않는 경우, 삭제된 데이터를 ROLLBACK을 사용해 복구 가능

    2) DELETE 문 기본 형식

    DELETE FROM 테이블명 WHERE 조건;

    3) DELETE 문 예

    • 여러 칼럼을 동시에 DELETE
      • DELETE FROM EMP WHERE ENAME = 'YONGMOON2';

    ※ DELETE vs TRUNCATE

    ㅤ
    DELETE
    TRUNCATE
    작동 방식
    행 단위로 데이터 삭제
    테이블 구조 유지, 모든 데이터 한 번에 제거
    속도
    각 행을 개별적으로 삭제 → 느림
    전체 테이블 삭제 → 빠름
    트랜잭션 로그
    각 삭제 작업을 트랜잭션 로그에 기록
    최소한의 트랜잭션 로그만 생성
    롤백 가능성
    트랜잭션 내에서 롤백 가능
    일반적으로 롤백 불가능 (일부 DBMS에서 제한적으로 가능)
    WHERE절 사용
    WHERE절 사용 → 특정 조건 데이터만 삭제 가능
    WHERE절 사용 불가
    자동 커밋
    X
    대부분 DMBS에서 자동 커밋
    인덱스 영향
    인덱스 유지
    인덱스 재설정
    외래 키 제약 조건
    외래 키 제약 조건 준수
    일반적으로 외래 키 제약 조건이 있는 테이블에서는 사용 불가
    트리거
    삭제 트리거 발생
    일반적으로 트리거 발생시키지 않음
    권한
    테이블에 대한 DELETE 권한 필요
    일반적으로 더 높은 수준의 권한 필요

    4. MERGE

    1️⃣ MERGE 기초 개념

    1) MERGE 문

    • SQL에서 데이터의 삽입, 업데이트, 삭제 작업을 하나의 명령문으로 처리할 수 있도록 도와주는 명령어
    • 주로 소스 테이블의 데이터를 타깃 테이블에 반영할 때 사용됨
    • MERGE문을 사용하면 특정 조건에 따라 데이터가 이미 존재하는지 확인
      • → 존재하면 업데이트, 존재하지 않으면 삽입 수행

    2) MERGE 문 기본 형식

    MERGE INTO 타깃_테이블 타깃(별칭) USING 소스_테이블 소스(별칭) ON (타깃.조건_칼럼 = 소스.조건_칼럼) WHEN MATCHED THEN UPDATE SET 타깃.칼럼1 = 소스.칼럼1, ... WHEN NOT MATCHED THEN INSERT (칼럼1, 칼럼2, ...) VALUES (소스.칼럼1, 소스.칼럼2, ...);

    3) MERGE 문 예

    • 기본적인 MERGE 예시
      • MERGE INTO EMP_MNG M USING EMP E ON (M.EMPNO = E.EMPNO) WHEN MATCHED THEN UPDATE SET M.SAL = E.SAL, M.COMM = E.SAL WHEN NOT MATCHED THEN INSERT (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO);
     
    Share article
    Contents
    1. INSERT1️⃣ 단일행 INSERT 문2️⃣ 서브 쿼리를 이용한 다중행 INSERT 문2. UPDATE1️⃣ UPDATE 기초 개념3. DELETE1️⃣ DELETE 기초 개념4. MERGE1️⃣ MERGE 기초 개념

    DailyCoding

    RSS·Powered by Inblog