-
[Spring] JPA 심화 JDBC 끝내기 -SQLSpring JPA총정리 2025. 5. 1. 11:53#SQL #Transactional
💡 Spring 정리: SQL
📘 개념 정리
🎯 데이터 베이스
1️⃣ 데이터?
● 문자, 숫자, 이미지, 영상 등 컴퓨터가 처리할 수 있는 모든 정보이다.
● 구조화된 데이터는 표(테이블)처럼 행과 열로 구성된 형태이다.
● 비 구조화 데이터는 일정한 형식 없이 저장되 정보이다. 대표적으로 블로글, 사진, 동영상 등등
● 데이터를 사람이 이해 할수 있도록 정리하고 의미를 부혀하면 정보(Information)가 된다.
2️⃣데이터 베이스
● 데이터를 체계적으로 저장, 관리, 검색할 수 있게 만든 저장소 이다.
● 실제로 데이터를 관리하려면 프로그램이나 툴이 필요하며,
DBMS (Database Management System)이라고 한다.ex) MySQL, PostgreSQL, Oracle, SQLite 등이 있어.
◆ 관계형 데이터베이스 (RDBMS): 데이터를 테이블로 관리
→ 각 테이블은 행과 열로 구성되고, 서로 관계(Foreign Key)로 연결돼
→ 대표: MySQL, Oracle, PostgreSQL 등◆ 비관계형 데이터베이스 (NoSQL): 테이블 대신 다른 방식으로 저장
→ 예: JSON 문서, 키-값 쌍, 그래프 등
→ 대표: MongoDB, Redis, Firebase 등SQL NoSQL DB Type 관계형 데이터 베이스 비관계형 데이터 베이스 구조 테이블 문서, 키- 값 등 다양 스키마 고정 유연 확장성 수직(Scale - up) 수평 (Scale-Out) 트랜잭션 강력한 지원(ACID) 제한적 또는 없음 사용예 금용,ERP 등 정형 데이터 SNS, 게임 로그, 캐시, IoT 등 🎯 SQL
관계형 데이터베이스(RDB)에서 데이터를 정의하고, 조작하고, 제어하고, 조회하는 언어 가 있다.
DDL (정의) 테이블/스키마 구조 정의 CREATE, ALTER, DROP DML (조작) 데이터 추가, 수정, 삭제 INSERT, UPDATE, DELETE DQL (조회) 데이터 조회 SELECT DCL (제어) 권한 설정 GRANT, REVOKE TCL (트랜잭션) 트랜잭션 제어 COMMIT, ROLLBACK, SAVEPOINT ✅ DDL- 생성(Create) / 수정(Alter)/삭제(Drop)/구조만 남기고삭제(TRUNCATE)
- 생성(Create) - 새 테이블, DB 인덱스 등을 처음 정의 할때 사용.
- 수정(Alter) - 테이블 구조를 바꿀 때 (열 추가/삭제, 타입 변경)
- 삭제(Drop) - 테이블이나 DB를 완전히 제거
CREATE TABLE users (id SERIAL, name VARCHAR(255)); ALTER TABLE member ADD COLUMN age INT; DROP TABLE users;
✅ DML - SELECT(조회) , INSERT(추가), UPDATE(수정), DELETE(삭제)
- SELCTE - 데이터 조회 (DQL)
SELECT //어떤 열을 조 할지 FROM // 어떤 테이블에서 조회할지 WHERE // 조건을 걸어 조회 범위를 좁힙 GROUP BY //같은 값을 그룹으로 묶어 집계 HAVING //그룹 결과에 조건을 추가 ORDER BY //조회 결과를 정렬 LIMIT/OFFSET // 조회 결과 개수 제한
- INSERT - 데이터 추가
- UPDATE - 데이터 수정
- DELETE - 데이터 삭제
INSERT INTO users (name) VALUES (?) UPDATE users SET name = 'Kim' WHERE id = 1; DELETE FROM users WHERE id = 1; SELECT * FROM user;
✅ DCL - GRANT, REVOKE
- 사용자의 데이터의 접근 권한을 부여( GRANT )하거나 회수( REVOKE )하는 명령어 이다.
(보완, 데이터 보호, 다중 사용자 환경 제어) - 데이터를 직접 변경하지 않지만, 데이터를 누가 변경 할 수있느냐를 결정 하는 보완 관리자 이다.
- 트랜잭션을 실행 할수 있는 권한 조차도 DCL이 정할 수 있다.
✅ TCL
- 트랜잭션(Transaction)은 데이터 베이스 작업의 최소 단위로
여러 개의 작업을 한 번에 처리하거나, 전부 되돌리는 단위이다. - ex) 은행 이체 → A 계좌 출금 + B 계좌 입금 = 하나의 트랜잭션
결과: “전부 성공하거나, 전부 실패해야 한다!”
✅ 언제 사용하는가?
- 여러개의 SQL 또는 JPA 연산 등등 하나의 코드 블럭 안에서 동시에 실행 될때, 사용한다.
- 예를 들어 내용 저장, 이미지 저장, 태그 저장 같은 작업이 동시에 실행되다가 중간에 하나라도
실패하면 트랜잭션 롤백(전체 작업을 취소 한다.) 시켜준다. - 비정상적으로 저장된 데이터를 막고, 마치 이 작업이 수행된적이 없던 것처럼 처리할수 있다.
✅ 트랜잭션의 특징 (ACID)
속성 설명 Atomicity (원자성) 모두 수행되거나, 전혀 수행되지 않아야 함 Consistency (일관성) 트랜잭션 전후에 데이터는 일관된 상태 유지 Isolation (격리성) 동시에 실행되는 트랜잭션은 서로 간섭하면 안 됨 Durability (지속성) 커밋된 내용은 영구히 저장돼야 함 ✅ TCL 명령어 정리
명령어 기능 설명 BEGIN / START TRANSACTION 트랜잭션 시작 생략되는 경우도 많음 COMMIT 트랜잭션 확정 데이터베이스에 반영 ROLLBACK 트랜잭션 취소 직전 상태로 되돌림 SAVEPOINT 중간 저장점 설정 특정 시점까지 되돌릴 수 있음 ROLLBACK TO SAVEPOINT 특정 지점으로 롤백 전체가 아닌 부분 취소 가능 🔄 동작 흐름
'Spring JPA총정리' 카테고리의 다른 글
[Spring] JPQL 전 총 정리 문서 (1) 2025.05.07 [Spring] JPA 끝내기 - JPA (0) 2025.05.02 [Spring] JPA 심화 JDBC 끝내기기 - 실습편 (0) 2025.05.01 [Spring] JPA 심화 JDBC 끝내기기 - 기초편 (0) 2025.05.01