DB

[Oracle] Oracle 연결 연산자, 산술 연산자, 트랜잭션

easy-6 2025. 3. 4. 21:53

Oracle에서 제공해주는 HR을 설치 후 연결 연산자, 산술 연산자, 트랜잭션을 작성하려고 한다. 

쿼리를 통해 데이터를 확인할 수 있다. 

SELECT * FROM departments

 

[그림 1] 기존의 DEPARTMENTS 테이블

 

 

● 연결연산자 (||) 

  1. 연결 연산자를 사용칼하여 한 테이블 내, 서로 다른 두 칼럼을 연결한 경우 

 

 

SELECT 	department_id || department_name
FROM departments;

 

[그림 2]

 

  2. 연결 연산자(||)를 사용한 문자열과 기존 테이블의 결합

SELECT 'Department of ' || department_name 
FROM departments

  

[그림 3]

  3. 그림 3의 칼럼명을 AS를 사용하여 "부서이름" 이라는 컬럼으로 변경 

SELECT 'Department of ' || department_name AS 부서이름 
FROM departments

 

[그림 4]

 


 

● 기존의 EMPLOYEES 테이블 

[그림 5] 기존의 EMPLOYEES 테이블

 

● 산술 연산자 ( +, ㅡ, *, / ) 

  1. 산술 연산자를 사용해서 정수형 타입의 칼럼SALARY에 숫자 500을 더함 

select salary + 500 , first_name, last_name from employees;

 

[그림 6]

 

  2. 산술연산자와 연결 연산자를 같이 적용하여 나타냄

select salary + 500 , first_name || '400' , last_name from employees;

 

[그림 7] 정수형 타입에 산술연산자, 문자열타입에 연결연산자 적용


 

트랜잭션 

트랜잭션은 데이터베이스의 여러 작업을 하나의 논리적 단위로 묶어, 모든 작업이 성공해야 최종 결과가 반영되고,
하나라도 실패하면 전체 작업이 취소되어 데이터베이스의 일관성을 유지하도록 보장하는 단위입니다.

 

SELECT INSERT DELETE UPDATE  등 여러가지 일을 실행하는 작업의 단위라고 볼 수 있다. 

 

A , B, C, D가 존재할 때, A와 B를 묶어서 실행했다면,트랜잭션으로 묶어서 처리했다고 볼 수 있다.

 

또한 트랜잭선은  ACID 원칙을 가짐.

ACID 원칙
원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)

  • 원자성: 트랜잭션 내의 모든 작업은 하나의 단위로 처리되며, 전부 성공하거나 전부 실패합니다.
  • 일관성: 트랜잭션 실행 전후에 데이터베이스는 일관된 상태를 유지해야 합니다.
  • 격리성: 동시에 수행되는 트랜잭션 간의 작업은 서로 간섭하지 않아야 합니다.
  • 지속성: 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 반영됩니다.

COMMIT       

1. 트랜잭션에서 실행된 모든 변경사항을 데이터베이스에 영구적으로 반영.

2. COMMIT 명령 실행 후, 해당 트랜잭션은 종료되고, 변경된 데이터는 다른 사용자나 프로세스에 즉시 반영.

 

ROLLBACK 

1. 트랜잭션 내에서 실행된 모든 변경사항 또는 SAVEPOINT 이후의 변경사항만 선택적으로 취소할 수 있음.

2. 전체 트랜잭션을 취소하는 경우, 트랜잭션 시작 전의 상태로 데이터가 되돌아감.

 

SAVEPOINT

1. 트랜잭션 내에 여러 SAVEPOINT를 설정하여, 특정 지점까지의 변경사항만 선택적으로 취소할 수 있음.

2. SAVEPOINT 이후의 변경사항을 롤백하더라도, 트랜잭션 전체를 종료하지 않고 계속 진행할 수 있다는 점이 특징.

'DB' 카테고리의 다른 글

[DB이론] 무결성 종류  (0) 2025.04.03
[Oracle] Oracle DB 설치  (0) 2025.03.01
[MySQL]MySQL 설치  (0) 2025.01.22
[MySQL]MYSQL : Error Code: 3734  (0) 2024.12.10
[MySQL] TIMESTAMP  (0) 2024.12.10