SQL

데이터 조작

별다방체리콕 2024. 1. 5. 09:31

 

 

 

 

 

데이터 조작어

💡 트랜잭션은 논리적 작업 단위를 형성하는 DML문의 모음으로 구성됨

  • 테이블에 새 행 추가
  • 테이블의 기존 행 수정
  • 테이블에서 기존 행 제거

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

새 행 삽입

  • 각 열에 대한 값을 포함하는 새 행 삽입
  • 테이블에 있는 열의 기본 순서로 값 나열
  • 선택적으로 INSERT 절에 열 나열

 

 

 

 

 

 

 

 

 

 

 

테이블의 행 갱신

  • WHERE 절이 지정된 경우 UPDATE 문은 특정 행의 값을 수정
  • WHERE 절을 생략하면 테이블의 모든 행에서 값이 수정

 

 

 

 

 

 

 

 

 

 

 

테이블에서 행 삭제

💡 WHERE 절을 지정하여 특정 행 삭제 WHERE 절을 생략하면 테이블의 모든 행 삭제

 

 

 

 

 

 

다른 테이블을 기반으로 행 삭제

💡 DELETE 문에서 쿼리를 사용하여 다른 테이블의 값을 기반으로 테이블에서 행 제거

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TRUNCATE 문

💡 DDL문이며 롤백 정보를 생성 X 테이블 자르기는 테이블의 삭제 트리거를 유발 X

 

 

 

 

 

 

 

 

데이터베이스 트랜잭션

  • 데이터를 일관성 있게 변경하는 여러 DML 문
  • 하나의 DDL 문
  • 하나의 DCL 문
유형 설명
DML 단일 엔티티나 논리적 작업 단위로 취급하는 임의 개수의 DML문으로 구성됨
DDL 하나의 DDL 문으로만 구성
DCL 하나의 DCL 문으로만 구성

 

 

 

 

 

 

 

 

 

데이터베이스 트랜잭션: 시작과 종료

💡 COMMIT 또는 ROLLBACK 문 실행
     DDL 또는 DCL 문 실행 (자동 커밋)
    유저가 SQL Developer 또는 SQL * plus를 종료
    시스템 중단

 

 

 

 

 

 

 

 

COMMIT 및 ROLLBACK 문의 이점

  • 데이터 일관성 보장
  • 변경 사항을 영구 적용하기 전에 데이터 변경 사항 검토
  • 논리적으로 관련된 작업 그룹화

 

 

 

 

 

 

 

 

 

 

 

 

명령문 설명
COMMIT 보류 중인 모든 데이터 변경 사항을 영구적으로 적용하여 현재 트랜잭션을 종료
SAVEPOINT NAME 트랜잭션 내에 저장점 표시
ROLLBACK 보류 중인 모든 데이터 변경 사항을 폐기하여 현재 트랜잭션 종
ROLLBACK TO SAVEPOINT NAME 트랜잭션을 지정된 저장점으로 롤백
롤백 중인 저장점 이후에 생성된 변경 사항 및/ 또는 저장점은 폐기됨  

 

 

 

 

 

 

 

 

암시적 트랜잭션 처리

💡 다음 상황에서 자동 커밋 발생

  • DDL 문 실행
  • DCL 문 실행
  • COMMIT 또는 ROLLBACK 문을 명시적으로 실행하지 않은 채 SQL 종료

 

 

 

상태 상황
자동 커밋 DDL 또는 DCL 문 실행
자동 롤백 SQL Developer 또는 SQL*PLUS가 비정상적으로 종료되거나 시스템 Failure가 발생

 

 

 

 

 

 

 

COMMIT 또는 ROLLBACK 이전의 데이터 상태

  • 이전의 데이터 상태 복구
  • 현재 유저는 SELECT 문을 사용하여 DML 작업 결과 확인
  • 다른 유저는 현재 유저가 실행한 DML문의 결과 확인 X
  • 영향을 받는 행이 잠기므로 다른 유저가 영향을 받는 행의 데이터 변경 X

 

 

 

 

 

 

 

COMMIT 후의 데이터 상태

  • 데이터 변경 사항이 데이터베이스에 저장
  • 이전의 데이터 상태 겹쳐씀
  • 모든 유저가 결과를 확인할 수 있음
  • 영향을 받는 행의 잠금이 해제되어 이러한 행을 다른 유저가 조작 가능
  • 모든 저장점이 지워짐

 

 

 

 

 

 

 

 

ROLLBACK 후의 데이터 상태

  • 데이터 변경 사항 언두
  • 이전의 데이터 상태 복원
  • 영향 받는 행의 잠금 해제

 

 

 

 

 

 

 

 

명령문 레벨 롤백

  • 실행 중 단일 DML문에 오류가 발생하면 해당 명령문만 롤백
  • Oracle 서버는 암시적 저장점 구현
  • 다른 모든 변경 사항 보존
  • 유저가 COMMIT 또는 ROLLBACK문을 실행하여 트랜잭션 명시적으로 종료

 

 

 

 

 

 

 

 

 

읽기 일관성

💡 항상 데이터를 일관성 있게 볼 수 있음

  • 한 유저가 변경한 사항이 다른 유저가 변경한 사항과 충돌하지 않음
    1. 읽는 사람은 쓰는 사람의 작업이 완료되기를 기다릴 필요 X
    2. 쓰는 사람은 읽는 사람의 작업이 완료되기를 기다릴 필요 X
    3. 쓰는 사람은 다른 쓰는 사람의 작업이 완료되길 기다려야 함

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'SQL' 카테고리의 다른 글

기타 스키마 객체  (1) 2024.01.05
DDL 문 사용  (1) 2024.01.05
집합 연산자 사용  (1) 2024.01.05
서브 쿼리  (2) 2024.01.05
조인  (1) 2024.01.05