Computer Science/Database

[SQL] SELECT 문법 총정리 (Oracle 기준)

[SQL] SELECT 문법 총정리 (Oracle 기준)이 글은 Oracle 기준으로 SELECT 문을 한 번에 정리한 글이다. 문법을 외우기보다는 “어떤 순서로 처리되는지”와 “자주 쓰는 형태”를 예제로 정리했다.0. 예시 테이블예시는 아래 테이블을 가정한다.users컬럼설명id회원 PKname이름email이메일created_at가입일(TIMESTAMP/DATE)orders컬럼설명id주문 PKuser_id회원 FKtotal_price총 금액status상태(PAID, CANCELED 등)created_at주문일(TIMESTAMP/DATE)1. SELECT 기본 형태1-1) 전체 조회SELECT *FROM users;1-2) 특정 컬럼만 조회SELECT id, name, emailFROM users;1-3..

[SQL] DDL / DML / DCL / TCL 총정리 (Oracle 기준)

[SQL] DDL / DML / DCL / TCL 총정리 (Oracle 기준)이 글은 Oracle DB 기준으로 SQL을 분류 체계(DDL, DML, DCL, TCL)에 따라 정리한 글이다. 단순 문법 나열이 아니라, 각 분류가 왜 필요한지와 언제 사용하는지를 함께 설명한다.1. SQL 분류 개요SQL은 역할에 따라 네 가지로 분류된다. 이 분류는 Oracle 시험, 실무, 면접에서 모두 기본 전제로 사용된다.분류이름역할DDLData Definition Language데이터 구조 정의DMLData Manipulation Language데이터 조회/조작DCLData Control Language권한 제어TCLTransaction Control Language트랜잭션 제어2. DDL (Data Definit..

[DB] 11. 데이터베이스 아키텍처

[DB] 11. 데이터베이스 아키텍처1. 데이터베이스 아키텍처란?데이터베이스 아키텍처는 DB를 하나의 서버로만 쓰지 않고, 서비스 규모에 맞게 어떻게 구성하고 운영할지를 정리한 구조다.사용자가 늘어나고 데이터가 많아질수록, 단일 DB 구조는 성능과 안정성에서 한계가 드러난다.DB 아키텍처는 이 문제를 해결하기 위한 현실적인 선택들의 집합이다.2. 단일 DB 구조의 한계초기 서비스는 보통 하나의 DB 서버로 시작한다.구성이 단순하다관리하기 쉽다하지만 서비스가 성장하면 문제가 생긴다.동시 접속 증가로 성능 저하장애 발생 시 서비스 전체 중단읽기/쓰기 요청이 한 서버에 집중이 지점부터 아키텍처 분리가 필요해진다.3. 커넥션(Connection)과 커넥션 풀(Connection Pool)애플리케이션이 DB에 접..

[DB] 10. 인덱스(Index)와 성능 최적화

[DB] 10. 인덱스(Index)와 성능 최적화1. 인덱스(Index)란?인덱스는 데이터베이스에서데이터를 빠르게 찾기 위해 사용하는 구조다.책의 맨 앞에 있는 목차를 떠올리면 이해하기 쉽다.목차가 있으면 원하는 페이지를 바로 찾을 수 있고,없으면 처음부터 끝까지 넘겨봐야 한다.데이터베이스에서도 인덱스가 없으면조건에 맞는 데이터를 찾기 위해테이블 전체를 하나씩 확인해야 한다.2. 인덱스가 없는 경우의 조회 방식인덱스가 없는 상태에서 WHERE 조건으로 조회하면,DBMS는 테이블의 모든 행을 하나씩 검사한다.이를 풀 테이블 스캔(Full Table Scan)이라고 한다.데이터가 적을 때는 큰 문제가 없지만,행의 수가 수십만, 수백만 개로 늘어나면조회 성능은 급격히 떨어진다.3. 인덱스가 있는 경우의 조회 ..

[DB] 09. 동시성 문제와 격리

[DB] 09. 동시성 문제와 격리1. 동시성(Concurrency)이란?동시성은 여러 트랜잭션이 동시에 데이터베이스에 접근하는 상황을 의미한다.현실적인 서비스 환경에서는여러 사용자가 동시에 요청을 보내고,그 요청들이 동시에 처리되는 것이 일반적이다.이때 아무 제어도 하지 않으면,데이터는 쉽게 꼬이게 된다.2. 동시성 문제가 발생하는 이유트랜잭션은 동시에 실행될 수 있다.하지만 데이터는 공유 자원이다.여러 트랜잭션이 같은 데이터를 동시에 읽거나 수정하면,처리 순서에 따라 결과가 달라질 수 있다.이 차이에서 동시성 문제가 발생한다.3. Dirty ReadDirty Read는아직 COMMIT되지 않은 데이터를다른 트랜잭션이 읽어버리는 현상이다.상황 예시 트랜잭션 A가 데이터를 수정했지만 아직 COMMIT하..

[DB] 08. 트랜잭션(Transaction)과 ACID

[DB] 08. 트랜잭션(Transaction)과 ACID1. 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 하나의 작업 단위를 의미한다.여러 개의 SQL 문이 하나의 묶음으로 실행되고,이 묶음 전체가 모두 성공하거나,아니면 전부 실패하도록 보장하는 개념이다.즉, 트랜잭션은“중간 상태를 허용하지 않기 위한 장치”라고 볼 수 있다.2. 트랜잭션이 필요한 이유다음과 같은 상황을 생각해보자.A 계좌에서 10,000원을 출금해B 계좌로 입금하는 작업이 있다. A 계좌 잔액 감소 B 계좌 잔액 증가이 두 작업은 반드시 함께 성공해야 한다.만약 출금만 되고 입금이 되지 않는다면,데이터는 즉시 잘못된 상태가 된다.이 두 작업을 하나의 트랜잭션으로 묶지 않으면,이런 문제가 발생할 수 있다.3. 트랜..

[DB] 07. JOIN의 종류와 동작 원리

[DB] 07. JOIN의 종류와 동작 원리1. JOIN이 필요한 이유관계형 데이터베이스에서는 데이터를 여러 테이블로 나눠 저장한다.그래서 원하는 정보를 얻으려면,여러 테이블의 데이터를 함께 조회해야 하는 경우가 많다.이때 사용하는 문법이 JOIN이다.JOIN은 테이블을 물리적으로 합치는 것이 아니라,조회 시점에 논리적으로 연결하는 방식이다.2. JOIN의 기본 개념JOIN은 공통된 기준 컬럼을 통해두 개 이상의 테이블을 연결해 조회한다.보통 기본 키(PK)와 외래 키(FK) 관계를 기준으로 JOIN을 수행한다.3. INNER JOININNER JOIN은 두 테이블 모두에 존재하는 데이터만 조회한다.가장 기본적인 JOIN 방식이다.SELECT u.id, u.name, o.id AS order_idFROM..

[DB] 06. SQL 기본 구조와 SELECT 실행 순서

[DB] 06. SQL 기본 구조와 SELECT 실행 순서1. SQL이란 무엇인가SQL(Structured Query Language)은데이터베이스에 저장된 데이터를 조회하거나 조작하기 위해 사용하는 언어다.SQL은 “프로그래밍 언어”라기보다는,DBMS에게 무엇을 원하는지 전달하는 질의 언어에 가깝다.개발자는 SQL을 작성하고,실제 데이터의 저장·조회·수정·삭제는 DBMS가 처리한다.2. SQL의 분류SQL은 역할에 따라 다음과 같이 나뉜다. 분류 의미 예시 DDL 데이터 정의 언어 CREATE, ALTER, DROP DML 데이터 조작 언어 SELECT, INSERT, UPDA..