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