SQL 13

트랜잭션의 4가지 특징

트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적인 작업 단위로, 여러 작업이 하나처럼 처리되어야 할 때 사용됩니다. 트랜잭션은 데이터의 무결성과 일관성을 보장하기 위해 아래의 ACID라는 4가지 특징을 갖습니다. 1. Atomicity (원자성) 예시: A가 B에게 10만 원을 이체함. A의 계좌에서 10만 원을 빼고 B의 계좌에 10만 원을 더해야 함 만약 A의 돈은 빠졌는데, 네트워크 오류로 B의 계좌에 돈이 들어가지 않았다면? 원자성이 보장되면, **A의 계좌에서도 출금이 취소(rollback)**되어 처음 상태로 복원됨. 🔹 2. Consistency (일관성) 예시: 은행 전체 계좌의 총 잔액이 1000만 원이었다고 할 때,A가 B에게 10만 원을 이체하더라도 이체 후 전체 ..

SQL 2025.05.12

SQL 명령문의 실행순서

SQL 명령문, 특히 SELECT 문의 실행 순서는 우리가 작성하는 순서와는 다르게 DBMS 내부에서 정해진 논리적 순서로 실행됩니다. 이 순서를 이해하면 서브쿼리, 정렬, 필터링 등을 정확히 다룰 수 있습니다. SELECT [열 목록]FROM [테이블]JOIN [다른 테이블]ON [조인 조건]WHERE [조건]GROUP BY [그룹화 기준]HAVING [그룹 조건]ORDER BY [정렬 기준]LIMIT [출력 개수 제한] 이건 우리가 작성하는 순서이고, 실제 DBMS가 처리하는 순서는 다릅니다! 순서절 (Clause) 역할 예시1️⃣FROM어떤 테이블에서 데이터를 가져올지 결정FROM employees2️⃣JOIN / ON여러 테이블을 결합 (조인)하고 조건에 따라 연결JOIN departments..

SQL 2025.05.12

RDBMS

1. 핵심 개념 관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)은 데이터를 행(Row)과 열(Column)로 구성된 테이블(Table)의 형태로 저장하고, 이들 간의 관계를 정의하여 데이터를 효율적으로 관리하고 처리하는 시스템입니다. 현재 가장 널리 사용되는 데이터베이스 모델이며, 대표적인 시스템으로는 Oracle, MySQL, PostgreSQL, Microsoft SQL Server 등이 있습니다. ■ 테이블 (Table)데이터를 행(Row)과 열(Column)로 구성해 저장하는 구조각각의 테이블은 하나의 엔터티(Entity)를 나타냄 (예: 사용자, 게시물 등)■ 열 (Column)테이블에서 다루는 속성 (예: 사용자 테이블의 이름,..

SQL 2025.05.09

데이터베이스에서 다양한 유형의 관계

데이터베이스에서 관계(Relationship)는 서로 다른 테이블 간의 연관성을 정의합니다. 관계형 데이터베이스에서는 주로 키(key)를 이용해 이러한 관계를 설정하며, 관계는 다음과 같은 주요 유형으로 분류됩니다. 1. 일대일 관계 (One-to-One, 1:1) 한 테이블의 레코드가 다른 테이블의 정확히 하나의 레코드와만 연관됨.예: 주민등록번호와 주민 개인 정보주민 테이블의 각 주민은 하나의 주민등록정보만 가짐.구현 방식: 두 테이블 중 하나가 다른 테이블의 기본 키를 외래 키로 사용.-- 주민 테이블CREATE TABLE Residents ( resident_id SERIAL PRIMARY KEY, name VARCHAR(100));-- 주민등록 정보 테이블 (1:1 관계)CREAT..

SQL 2025.05.08

JOIN이란? 그리고 'INNER JOIN'과 'LEFT JOIN'의 차이점

SQL에서 JOIN, INNER JOIN, LEFT JOIN은 여러 테이블의 데이터를 조합해서 하나의 결과로 만들기 위한 문법입니다. 각각의 차이점은 조인 조건에 맞는 행이 없을 때 해당 행을 포함하느냐에 달려 있습니다. users 테이블 (회원 정보)id name1Alice2Bob3Carol orders 테이블 (주문 정보)iduser_id product11Keyboard21Monitor32Mouse44Headphones 다음과 같은 두 개의 테이블이 있다고 할 때 1. INNER JOIN (또는 그냥 JOIN) 조인 조건을 만족하는 행만 반환user_id가 users.id와 일치하는 경우만 결과에 포함SELECT users.name, orders.productFROM usersINNER JOIN..

SQL 2025.05.07

정규화에 대하여

정규화(Normalization)는 데이터베이스 설계에서 중복을 최소화하고 데이터 무결성을 유지하기 위한 체계적인 과정입니다. 관계형 데이터베이스에서 테이블을 보다 효율적이고 구조적으로 정리하기 위해 사용되며, 여러 단계(정규형, normal form)로 구분됩니다. ✅ 정규화의 목적 데이터 중복 최소화삽입, 삭제, 갱신 이상(anomaly) 제거데이터 일관성 유지데이터 구조를 명확히 하여 유지보수 용이성 증가 예를 들어 아래처럼 한 테이블에 사용자와 주문 정보를 같이 저장한다고 가정해봅시다. user_iduser_nameorder_idproduct1alice101keyboard1alice102mouse2bobnullnull 발생 가능한 문제:중복: Alice의 정보가 여러 번 저장됨삽입 이상: 주문이..

SQL 2025.05.01

기본 키(primary key)와 외래 키(foreign key)

기본 키(primary key)와 외래 키(foreign key)는 관계형 데이터베이스에서 테이블 간의 관계를 정의하고 데이터 무결성을 보장하기 위해 사용하는 중요한 개념입니다. 기본 키 (Primary Key) 기본 키는 테이블의 각 행(레코드)을 고유하게 식별하기 위한 하나의 열 또는 여러 열의 조합입니다. 중복될 수 없고(null도 불가), 하나의 테이블에 하나만 존재합니다. CREATE TABLE Users ( user_id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100)); 위의 코드로 예시를 들자면, Users 테이블은 사용자 정보를 저장합니다. user_id는 기본 키입니다. 각 사용자마다 고유한 값을 가져야 하므로 중복될 ..

SQL 2025.05.01

SQL 함수

SELECT문 가장 마지막 줄에 작성, 상행순서또한 가장 마지막에 실행한다. [표현법]SELECT 조회할 컬럼...FROM 조회할 테이블WHERE 조건식ORDER BY 정렬기준이 될 컬럼명 | 별칭 | 컬럼순번 [ASC | DESC] [NULLS FIRST | NULLS LAS  ASC: 오름차순(작은 값으로 시작해서 점점 커지는 것) --> 기본값 DESC: 내림차순(큰 값으로 시작해서 값이 점점 줄어드는 것)                NULL은 기본적으로 가장 큰 값으로 분류해서 정렬한다.NULLS FIRST: 정렬하고자 하는 컬럼값에 NULL이 있을 경우 해당 데이터 맨 앞에 배치 (DESC일 때 기본값) NULLS LAST: 정렬하고자 하는 컬럼값에 NULL이 있을 경우 해당 데이터 맨 뒤에 배..

SQL 2025.01.16

DDL(CREATE)+1시간 동안 오류를 못 찾은 ORA-00907: 누락된 우괄호..

DDL    오라클에서 제공하는 객체를 새로 만들고 (CREATE), 구조를 변경하고(ALTER), 구조자체를 삭제(DELETE)하는 언어 즉, 실제 데이터 값이 아닌 규칙 자체를 정의하는 언어를 DDL이라고 한다. 오늘 처음 실습하면서 뚝딱거리긴 했지만 손에만 익는다면 크게 복잡하진 않을 것 같다. 잊을만한 내용들만 정리하여 복기했다. COMMENT ON COLUMN TB_RENT.RENT_NO IS '대여번호'; 컬럼에 주석달기이다. 컬럼에 대한 부연 설명이 필요할 때 위와 같은 형식으로 코드를 작성하면 사진의 표시한 부분과 같이 '대여번호'라고 코멘트가 담겨있는 것을 볼 수 있다.  GENDER CHAR(3) CHECK(GENDER IN ('남','여'))  CHECK 조건식은 해당 컬럼에 들어올 ..

SQL 2024.12.23

JOIN

오늘 INNER JOIN과 OUTER JOIN에 대해 배웠다. 우선, JOIN은 두 개 이상의 테이블에서 데이터를 조회하고자 할 때 사용되는 구문이며조회 결과는 하나의 결과(RESULT SET)를 반환한다. 관계형 데이터베이스에서는 최소한의 데이터를 각각의 테이블에 담고 있으며 무작정 다 조회해 오는 것이 아니라 각 테이블간 연결고리(외래키)를 통해 데이터를 매칭시켜 조회해야한다. JOIN은 크게 "오라클 전용구문"과 "ANSI 구문"이 있는데, 웬만하면 ANSI구문을 사용하는게 좋을 거 같다.   등가조인(EQUAL JOIN) / 내부조인(INNER JOIN)  우선 등가조인(EQUAL JOIN) / 내부조인(INNER JOIN)은 연결시키는 컬럼의 값이 일치하는 행들만 조회(일치하는 값이 없는 행은 ..

SQL 2024.12.18