본문 바로가기

SQL/기본 개념

DML (Data Manipulation Language) _ 데이터 조작 언어

▶ DML (Data Manipulation Language) [ 데이터 조작 언어 ]

  • 테이블에 값을 삽입하거나(INSERT), 수정하거나(UPDATE), 삭제하는(DELETE) 구문

▶ INSERT

  • INSERT : 테이블에 새로운 행을 추가하는 구문
  • 작성 방법
    1) INSERT INTO 테이블명 VALUES(데이터1, 데이터2, ...);
    - 테이블에 모든 컬럼에 대한 값을 INSERT할 때 사용
    - INSERT하고자 하는 컬럼이 모든 컬럼인 경우, 컬럼명 생량 가능
    - 단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야 함

    2) INSERT INTO 테이블명(컬럼명, 컬럼명, 컬럼명) VALUES(데이터1, 데이터2, 데이터3, ...);
    - 테이블에 내가 선택한 컬럼에 대한 값만 INSERT할 때 사용
    - 선택 안 된 컬럼은 값이 NULL이 들어감

▶ UPDATE

  • UPDATE : 테이블에 기록된 컬럼의 값을 수정하는 구문
  • 작성 방법
    - UPDATE 테이블명 SET 컬럼명 = 바꿀 값 [ WHERE 컬럼명 비교연산자 비교 값 ];
    ※ [주의] ★ ★ 조건절을 설정하지 않고 UPDATE 구문 실행 시, 모든 행의 컬럼 값 변경
    ※ 여러 컬럼을 한번에 수정할 때는 콤마( , )로 컬럼을 구분
  • ★ ★ UPDATE 시에도 서브쿼리 사용 가능
  • 작성 방법
    - UPDATE 테이블명 SET 컬럼명 = (서브쿼리)

▶ DELETE

  • 테이블의 행을 삭제하는 구문
  • 작성 방법
    - DELETE FROM 테이블명 [ WHERE 조건설정 ];
  • ★★ WHERE절 조건 미작성 시 모든 행이 삭제됨!

▶ TRUNCATE ( DDL  / DML 아님 )

  • 테이블의 전체 행을 삭제하는 DDL(Data Definition Language - 데이터 정의 언어)
  • DELETE보다 수행 속도가 더 빠름
  • ★ ★ ROLLBACK을 통해 복구 불가

▶ TCL ( TRANSACTION CONTROL LANGUAGE : 트랜잭션 제어 언어 )

  • COMMIT (트랜잭션 종료 후 저장) / ROLLBACK (트랜잭션 취소) / SAVEPOINT (임시저장)
  • 트랜잭션은 DML과 관련 있음
    ※ DML : 데이터 조작 언어로 데이터의 삽입, 수정, 삭제

▶ TRANCSACTION이란?

  • 데이터베이스의 논리적 연산 단위
  • 데이터 변경 사항을 묶어 하나의 트랜잭션에 담아 처리함
  • 트랜잭션의 대상이 되는 데이터 변경 사항 : INSERT, UPDATE, DELETE (DML)
  • 예를 들어,
    INSERT 수행 시 바로 DB 반영 X
    INSERT 수행 → 트랜잭션에 추가 → COMMIT → DB 반영 O
    INSERT 10번 수행 → 1개 트랜잭션에 10개 추가 → ROLLBACK → DB 반영 X
  • 1) COMMIT : 메모리 버퍼(트랜잭션)에 임시 저장된 데이터 변경 사항을 DB에 반영
  • 2) ROLLBACK : 메모리 버퍼(트랜잭션)에 임시 저장된 데이터 변경 사항을 삭제하고
                               "마지막 COMMIT 상태"로 돌아감
  • 3) SAVEPOINT : 메모리 버퍼(트랜잭션)에 저장 지점을 정의하여
                                ROLLBACK 수행 시 전체 작업을 삭제하는 것이 아닌
                                저장 지점까지만 일부 ROLLBACK
  • [ SAVEPOINT 사용법 ]
    SAVEPOINT 포인트명1;
    ...
    SAVEPOINT 포인트명2;
    ...
    ROLLBACK TO 포인트명1; [ 포인트1 지점까지 데이터 변경사항 삭제 ]

'SQL > 기본 개념' 카테고리의 다른 글

VIEW / SEQUENCE / INDEX  (0) 2024.12.16
DDL (DATA DEFINITION LANGUAGE) _ 데이터 정의 언어  (0) 2024.12.16
SUBQUERY(서브쿼리)  (0) 2024.12.16
JOIN  (0) 2024.12.16
GROUP BY / HAVING  (0) 2024.12.16