Skip to content
/ 03_db Public

aibe-7th/03_db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

03_db

Subject - Database Format - PDF / SQL Language - Korean RDBMS - MySQL


📂 상세 자료 목록

📁 30 - 데이터베이스 입문 및 기초

📁 31 - SQL 심화 및 데이터 조작/정의어

📁 32 - JDBC와 데이터베이스 연동

📝 31/311-1 - SQL 기초 및 DQL 실습 스크립트 (MySQL 기준)

  • 01_dql_select_where.sql : SELECT 기본 조회, AS 별칭 부여, 중복 제거(DISTINCT), WHERE 비교 및 논리 연산 필터링
  • 02_dql_operators_limit.sql : BETWEEN 범위 필터, IN 복수 조건 비교, LIKE 와일드카드 패턴 매칭, ORDER BY 정렬 및 LIMIT 페이징 처리
  • 03_dql_null_string.sql : IS NULL 조건식, MySQL IFNULL 및 ANSI 표준 COALESCE 함수, CONCAT, TRIM, SUBSTRING 등 주요 문자열 가공 함수
  • 04_dql_case_aggregate.sql : CASE WHEN 조건 분기 제어 식 및 5대 대표 집계 함수(COUNT, SUM, AVG, MIN, MAX)
  • 05_dql_groupby_having.sql : GROUP BY 기준 데이터 그룹 세그먼트화 및 HAVING 절 그룹 결과 조건 필터링
  • 06_dql_execution_order.sql : SQL 쿼리의 논리적 해석/실행 순서(FROM -> WHERE -> ... -> LIMIT) 상세 분석 및 SELECT 별칭(Alias) 참조 제한 이유 분석

📝 31/311-2 - 서브쿼리, 조인 및 데이터베이스 설계 (MySQL 기준)

  • 01_subquery_scalar_uncorrelated.sql : SELECT 절 단일값 매핑 스칼라 서브쿼리 및 메인쿼리와 무관하게 독립 수행되는 비상관 서브쿼리 (WHERE, FROM 인라인 뷰, HAVING)
  • 02_subquery_correlated.sql : 메인쿼리 행 수(N)만큼 반복 계산되는 상관 서브쿼리 및 존재 여부 판별 (EXISTS / NOT EXISTS 단락 평가)
  • 03_join_inner_outer.sql : 공통 행 결합 INNER JOIN, 한쪽 기준 결합 LEFT/RIGHT OUTER JOIN 및 MySQL FULL OUTER JOIN 구현을 위한 UNION 기법
  • 04_join_cross_self.sql : 모든 조합을 결합하는 CROSS JOIN (데카르트 곱) 및 동일 테이블의 자기 참조 결합인 SELF JOIN
  • 05_db_architecture_pk_fk.sql : PK-FK 매핑 연결 메커니즘, 데이터 참조 무결성 확보 및 고속 JOIN 검색 튜닝을 위한 외래키 인덱싱 설계
  • 06_db_architecture_normalization.sql : 정규화(이상현상 방지)와 반정규화(조회 성능 향상) 비교 및 ORM의 지연 로딩 N+1 문제를 해결하기 위한 SQL JOIN 통합 로딩(Fetch Join) 기법

📝 31/312-1 - 데이터 조작어 (DML) 실습 스크립트 (MySQL 기준)

  • 01_dml_insert.sql : 단일 행, 다중 행, 서브쿼리 기반 데이터 삽입 (INSERT INTO ... SELECT) 실습
  • 02_dml_update.sql : UPDATE 연산 구조, WHERE 절 누락 방지(Safe Updates 옵션) 및 트랜잭션 격리 검증 (ROLLBACK/COMMIT) 실습
  • 03_dml_update_error1093.sql : MySQL의 동일 테이블 직접 참조 수정 제약(Error 1093) 원리 분석 및 임시 인라인 뷰(FROM (SELECT ...) AS temp) 우회 방법
  • 04_dml_delete.sql : DELETE 행 단위 삭제, 서브쿼리를 활용한 일괄 삭제 및 DDL TRUNCATE와의 성능/롤백 유무 차이 분석
  • 05_dml_hard_soft_delete.sql : 하드 딜리트(물리 삭제)와 소프트 딜리트(논리 삭제)의 동작 방식 비교 및 조회 패턴(WHERE is_deleted = 0) 및 설계 상의 트레이드오프 분석

📝 31/312-2 - 데이터 정의어 (DDL) 및 데이터베이스 구조 설계 (MySQL 기준)

  • 01_ddl_data_types.sql : MySQL 주요 데이터 타입(수치형, 문자형, 날짜/시간형) 특성 확인 및 TIMESTAMPDATETIME 타임존 영향성 비교
  • 02_ddl_constraints.sql : 5대 핵심 제약 조건(PK, FK, UNIQUE, NOT NULL, DEFAULT) 설정 및 무결성 위반 에러 유도, 외래키 연동 옵션(ON UPDATE CASCADE, ON DELETE SET NULL) 검증
  • 03_ddl_schema_control.sql : CREATE, ALTER를 통한 스키마 개편(컬럼 추가 ADD, 속성 변경 MODIFY, 컬럼 삭제 DROP COLUMN) 및 DROP TABLE을 통한 구조물 완전 소각
  • 04_ddl_truncate_vs_delete.sql : DDL TRUNCATE와 DML DELETE의 내부 동작 비교 (트랜잭션 오토 커밋/롤백 불가성 및 AUTO_INCREMENT 카운터 초기화 영향)
  • 05_ddl_indexes.sql : B-Tree 인덱스 생성(CREATE INDEX), EXPLAIN 키워드를 활용한 실행 계획 분석(Full Table Scan vs Index Scan) 및 인덱스 트레이드오프(조회 가속 vs 쓰기 지연/공간 비용) 분석
  • 06_ddl_surrogate_vs_natural_key.sql : 자연키(Natural Key) 설계의 취약성(식별값 변경 시 참조 전파 비용 및 락 발생) 및 인조키(Surrogate Key) 설계의 참조 안전성 실증

📝 31/313 - 데이터베이스 설계와 정규화 실습 스크립트 (MySQL 기준)

  • 01_db_keys.sql : 슈퍼키, 후보키, 기본키, 대체키, 외래키, 복합키의 정의 및 아파트 입주자-배달차량 시나리오를 통한 데이터 무결성 검증
  • 02_surrogate_vs_natural_key.sql : 자연키 설계와 인조키 설계 비교, Sequence(AUTO_INCREMENT) 및 UUID 채번 특징 실습
  • 03_anomalies_and_normalization.sql : 데이터 중복으로 인한 3대 이상 현상(삽입, 삭제, 갱신 이상) 실증 및 제1·2·3정규형(1NF/2NF/3NF) 및 BCNF 무손실 분해 설계
  • 04_denormalization.sql : 대용량 트래픽 대비 조회 성능 가속화를 위한 중복 컬럼 주입, 파생 컬럼 생성 및 트랜잭션(Transaction)을 통한 데이터 동기화 실습

📝 32/321-1 (GitHub) - JDBC와 데이터베이스 연동 실습 프로젝트

  • pom.xml : Maven 프로젝트 의존성 설정 (MySQL Connector/J 라이브러리 연동)
  • EXERCISE.md : JDBC 단계별 실습 가이드 (DriverLoading, Connection, PreparedStatement, ResultSet, Scanner 메모 앱)
  • src/main/java : Java JDBC 예제 소스 코드 및 콘솔 메모 어플리케이션 구현체

📝 32/321-2 (GitHub) - Spring JDBC와 영속성 실습 프로젝트

  • pom.xml : Maven 프로젝트 의존성 및 환경 설정 (Spring Boot, Spring JDBC, MySQL/PostgreSQL 드라이버 등)
  • EXERCISE.md : Spring JDBC 단계별 송금 실습 가이드 (JdbcTemplate, Transaction, 비관적 락 등)
  • src/main/java : Spring JDBC 예제 소스 코드 (Entity, Repository, Service, Controller 등)

📝 32/322-1 (GitHub) - MyBatis와 SQL Mapper 실습 프로젝트

  • pom.xml : Maven 프로젝트 의존성 및 환경 설정 (Spring Boot, MyBatis Starter, MySQL/PostgreSQL 드라이버 등)
  • EXERCISE.md : MyBatis 단계별 실습 가이드 (애노테이션 Mapper, XML Mapper, ResultType/ResultMap, 계층형 아키텍처 등)
  • src/main/java : MyBatis 예제 소스 코드 (Board, Member, Post 관련 Controller, Service, Mapper, Repository 등)

📝 32/322-2 (GitHub) - MyBatis 동적 SQL과 연관관계 매핑 실습 프로젝트

  • pom.xml : Maven 프로젝트 의존성 및 환경 설정 (Spring Boot, MyBatis Starter, Lombok, MySQL/PostgreSQL 등)
  • EXERCISE.md : MyBatis 심화 실습 가이드 (if/where 동적 쿼리, set 부분 수정, choose/foreach 분기 및 순회, association/collection/N:M 중첩 매핑 등)
  • src/main/java : MyBatis 심화 예제 소스 코드 (UserMapper, OrderMapper, BoardMapper, StudentMapper 등)

📝 32/323-1 (GitHub) - JPA와 Hibernate 기초 실습 프로젝트

  • pom.xml : Spring Boot와 Spring Data JPA, Hibernate 기반 프로젝트 의존성 및 데이터베이스 환경 설정
  • EXERCISE.md : 엔티티 매핑, 영속성 컨텍스트와 생명주기, 기본 CRUD를 익히는 단계별 실습 가이드
  • src/main/java : Entity, Repository, Service 계층을 활용한 JPA 기본 예제 소스 코드

📝 32/323-2 (GitHub) - JPA 연관관계 매핑과 N+1 문제 실습 프로젝트

  • pom.xml : 연관관계와 조회 성능 실습을 위한 Spring Data JPA 및 데이터베이스 의존성 설정
  • EXERCISE.md : 일대일·일대다·다대일·다대다 연관관계 매핑과 지연 로딩, N+1 문제 해결 실습 가이드
  • src/main/java : 연관관계 편의 메서드, Fetch Join과 EntityGraph 등을 적용한 예제 소스 코드

📝 32/323-3 (GitHub) - JPA 실무 심화 실습 프로젝트

  • pom.xml : JPA 기반 애플리케이션의 실무 기능 구현을 위한 프로젝트 의존성 및 환경 설정
  • EXERCISE.md : 복잡한 조회, 변경 감지, 트랜잭션과 성능 최적화를 다루는 JPA 심화 실습 가이드
  • src/main/java : 실무형 도메인 모델과 Repository, Service 계층의 심화 예제 소스 코드

Contributors