DB/ORACLE 15

트랜잭션 격리 수준(Transaction Isolation Level)

데이터베이스 트랜잭션은 여러 작업을 하나의 논리적 단위로 묶어 처리합니다. 이러한 트랜잭션은 일관성 있는 데이터 상태를 유지하고, 동시에 여러 사용자가 데이터를 처리하는 환경에서 문제를 방지하기 위해 격리(isolation)를 필요로 합니다. 트랜잭션 격리 수준은 여러 트랜잭션 간의 격리 정도를 설정하는 기준이며, 이로 인해 발생할 수 있는 문제를 완화하거나 방지할 수 있습니다. 1. 트랜잭션 격리 수준의 종류SQL 표준에서는 트랜잭션 격리 수준을 다음 네 가지로 정의합니다:READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE각 수준은 트랜잭션 간에 발생할 수 있는 Dirty Read, Non-Repeatable Read, Phantom Read 문제를 ..

DB/ORACLE 2025.01.20

데이터베이스(DB) 정규화와 비정규화

데이터베이스 정규화(Normalization)와 비정규화(Denormalization)의 정의와 함께 각 기법이 어떻게 적용되는지 예시를 통해 설명하겠습니다.  1. 데이터베이스 정규화(Normalization)정규화는 데이터베이스에서 중복을 최소화하고 데이터를 효율적으로 관리할 수 있도록 테이블을 구조화하는 과정입니다. 이 과정은 여러 단계로 나뉘며, 각 단계는 '정규형(Normal Form)'이라고 불립니다.정규화의 목적중복 제거: 같은 데이터를 여러 번 저장하지 않도록 한다.데이터 무결성 유지: 잘못된 데이터가 삽입되지 않도록 한다.검색 효율성 향상: 데이터를 쉽게 찾을 수 있도록 한다.정규화 과정제1정규형(1NF): 각 열에 원자 값(Atomic Value)만 포함되도록 하는 규칙입니다. 즉, 각..

DB/ORACLE 2025.01.16

ORACLE(오라클) ROWNUM 함수

Oracle 데이터베이스에서 ROWNUM은 결과 집합 내의 각 행에 대해 고유한 번호를 부여하는 가상 컬럼입니다. 이는 데이터를 제한하거나 특정 조건에 맞는 행을 빠르게 필터링하는 데 사용됩니다. ROWNUM의 특징결과 집합 생성 순서: ROWNUM은 쿼리가 처리되는 순서에 따라 행 번호를 부여합니다.임시 컬럼: ROWNUM은 실제 데이터베이스 테이블의 컬럼이 아니며, SELECT 쿼리에서만 존재합니다.제약 사항: ROWNUM은 WHERE 절에서 조건으로 사용될 때 동작 방식에 주의가 필요합니다.기본 구문SELECT ROWNUM, column1, column2FROM table_name;예제 1: 간단한 데이터 제한테이블에서 상위 5개의 행만 가져오고 싶을 때 사용합니다.테이블 구조CREATE TABLE..

DB/ORACLE 2025.01.09

ORACLE(오라클) ROW_NUMBER() 함수

Oracle 데이터베이스에서 ROW_NUMBER() 함수는 순차적인 숫자를 생성하여 결과 집합 내의 각 행에 고유한 번호를 부여하는 데 사용됩니다. 이는 주로 데이터 순서를 지정하거나 특정 조건에 따라 데이터를 필터링할 때 유용합니다. 함수 구조ROW_NUMBER() OVER (PARTITION BY ORDER BY )PARTITION BY: 데이터를 그룹화하는 기준을 지정합니다. 각 그룹별로 ROW_NUMBER()가 독립적으로 계산됩니다.ORDER BY: 각 그룹 내에서 행 번호를 매기는 기준이 되는 정렬 순서를 지정합니다.사용 사례중복 데이터 제거페이징 처리그룹 내 특정 순위의 데이터 추출예제 1: 중복 데이터 제거중복된 데이터를 가진 테이블에서 최신 데이터만 남기고 나머지를 삭제한다고 가정합니다...

DB/ORACLE 2025.01.09

데이터베이스 트랜잭션(Transaction)

🧐 트랜잭션이란?트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위를 뜻합니다. 여러 데이터베이스 연산(INSERT, UPDATE, DELETE 등)을 하나로 묶어서 실행하며, 모든 연산이 성공적으로 완료되거나, 전부 취소(ROLLBACK)되는 것이 보장됩니다.트랜잭션은 데이터 무결성과 일관성을 유지하기 위한 필수적인 메커니즘입니다. 📋 트랜잭션의 특징 (ACID)Atomicity (원자성): 트랜잭션 내의 모든 작업이 성공적으로 완료되거나, 전부 취소됩니다.Consistency (일관성): 트랜잭션이 완료되면 데이터베이스는 항상 일관된 상태를 유지합니다.Isolation (격리성): 하나의 트랜잭션이 실행되는 동안 다른 트랜잭션이 간섭하지 못합니다.Durability (지속성): 트랜잭션이 성공적으..

DB/ORACLE 2024.12.31

데이터베이스(DB) Lock

데이터베이스에서 Lock은 동시성 제어의 핵심 메커니즘으로, 여러 트랜잭션이 동시에 데이터를 접근하거나 변경할 때 데이터 무결성을 보장하기 위해 사용됩니다.1. Lock의 개념Lock은 트랜잭션이 특정 데이터나 자원에 대해 접근할 때 다른 트랜잭션이 해당 데이터나 자원에 접근하지 못하도록 제한하는 메커니즘입니다. 이는 데이터의 무결성을 보장하고 교착 상태(Deadlock)나 경합 상태(Race Condition)를 방지하는 데 사용됩니다.Lock이 필요한 이유데이터 무결성 보장트랜잭션 간 충돌 방지동시성 문제 해결2. Lock의 종류Lock은 여러 기준에 따라 분류됩니다. 주요 분류는 다음과 같습니다:2.1. 잠금 수준에 따른 분류Row-Level Lock특정 행(Row)에만 잠금을 설정합니다.동시성을 ..

DB/ORACLE 2024.12.26

오라클 순위 함수 (Ranking Functions)

오라클 데이터베이스에서는 데이터를 특정 기준에 따라 순위를 매길 때 순위 함수(Ranking Functions)를 사용합니다. 이러한 함수들은 분석 함수(Analytic Functions)의 일부로, 데이터를 그룹화하거나 정렬된 결과에 기반한 다양한 순위를 제공합니다. 🏆1. 순위 함수란?순위 함수는 쿼리 결과에 대해 특정 기준으로 데이터를 정렬하고 순위를 매기는 데 사용됩니다. 오라클에서 제공하는 대표적인 순위 함수는 다음과 같습니다:RANK(): 동일한 값에 동일 순위를 부여하며, 순위 간 간격이 발생합니다.DENSE_RANK(): 동일한 값에 동일 순위를 부여하지만, 순위 간 간격이 발생하지 않습니다.ROW_NUMBER(): 동일한 값이라도 고유한 순위를 부여합니다.2. 순위 함수의 기본 구문SE..

DB/ORACLE 2024.12.17

오라클 계층형 쿼리 (Hierarchical Query)

오라클 데이터베이스에서는 계층적인 데이터 구조를 쉽게 조회할 수 있는 계층형 쿼리 기능을 제공합니다. 조직도, 카테고리 트리, 디렉토리 구조와 같은 계층적인 데이터를 다룰 때 유용합니다. 🌳1. 계층형 쿼리란?계층형 쿼리는 데이터 간의 부모-자식 관계를 기반으로 계층 구조를 조회하는 SQL입니다. 이를 위해 오라클은 다음과 같은 키워드를 제공합니다:CONNECT BY: 부모-자식 관계를 정의.START WITH: 계층 구조의 시작점을 정의.PRIOR: 부모-자식 관계를 지정할 때 사용.LEVEL: 현재 계층의 깊이를 나타내는 의사 열(column).2. 기본 구문SELECT 컬럼1, 컬럼2, LEVELFROM 테이블명START WITH 시작 조건CONNECT BY PRIOR 부모_컬럼 = 자식_컬럼;주..

DB/ORACLE 2024.12.17

오라클 COALESCE 함수란?

COALESCE 함수는 Oracle에서 제공하는 유용한 널 처리 함수입니다. 여러 인수 중 첫 번째로 NULL이 아닌 값을 반환합니다. 이 함수는 데이터베이스에서 NULL 값을 처리하거나 대체 값을 설정할 때 매우 유용합니다.기본 문법COALESCE(expr1, expr2, ..., exprN)expr1, expr2, ..., exprN: NULL이 아닌 값을 찾기 위해 순서대로 평가하는 표현식들입니다.반환값: 가장 첫 번째 NULL이 아닌 값을 반환합니다. 모든 인수가 NULL이면 NULL을 반환합니다.사용 예제1. 간단한 예제SELECT COALESCE(NULL, 'A', 'B', 'C') AS resultFROM DUAL;결과:ANULL이 아닌 첫 번째 값이 'A'이므로 반환됩니다.2. 컬럼 값에서..

DB/ORACLE 2024.12.17

ORACLE(오라클) 숫자 함수 총정리

1. ABS (절대값 구하기)ABS 함수는 주어진 숫자의 절대값을 반환합니다.사용법:SELECT ABS(-123) AS ABS_VALUE FROM DUAL;결과:123💡 TIP: 절대값을 계산하여 부호를 제거하고 싶을 때 사용합니다.2. CEIL (올림)CEIL 함수는 주어진 숫자보다 크거나 같은 가장 작은 정수를 반환합니다.사용법:SELECT CEIL(5.3) AS CEIL_VALUE FROM DUAL;결과:6📌 활용: 금액 계산에서 올림 처리가 필요한 경우 유용합니다.3. FLOOR (내림)FLOOR 함수는 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환합니다.사용법:SELECT FLOOR(5.7) AS FLOOR_VALUE FROM DUAL;결과:5🛠️ 활용: 할인율 계산 등에서 내림 처리가..

DB/ORACLE 2024.12.16