TIL - 20250724

juni·2025년 7월 24일

TIL

목록 보기
73/317

0724 학습 내용 정리

✅ 스프링 JDBC로 도서 관리

📌 BookSpringRepository 클래스 구현

  • JdbcTemplate을 사용한 데이터베이스 CRUD 처리

  • 주요 메서드:

    • save(Book book): 도서 저장
    • updateTitleAndAuthor(Book book): 도서 제목, 저자 수정
    • deleteById(Long id): 도서 삭제
    • findAll(): 도서 전체 목록 조회
    • findById(Long id): 특정 도서 조회

📌 BookSpringRepositoryTest 클래스

  • SpringBootTest 환경에서 Repository 메서드 테스트
  • 각 메서드별 @Test 작성 및 JUnit5 사용

✅ SQL 정렬 및 그룹핑 문법 복습

🔸 ORDER BY 기본 문법

SELECT USERNAME, REGISTRATION_DATE
FROM USERS
ORDER BY REGISTRATION_DATE DESC;
  • 여러 컬럼으로 정렬 가능
  • 별칭, 컬럼 순번으로도 정렬 가능

🔸 GROUP BY 와 ORDER BY 함께 사용

SELECT user_id, COUNT(*) AS post_count
FROM POSTS
GROUP BY user_id
ORDER BY post_count DESC;
  • 그룹핑된 결과를 기준으로 정렬 가능

🔸 CASE 를 활용한 조건 정렬

SELECT post_id, user_id, content, creation_date
FROM POSTS
ORDER BY
  CASE WHEN user_id = 21 THEN 1 ELSE 2 END,
  creation_date DESC;

✅ SQL 정렬 실전 문제 연습

  1. 자기소개 길이순 정렬
SELECT FULL_NAME, BIO, LENGTH(BIO) AS 소개글길이
FROM USER_PROFILES
ORDER BY 소개글길이 DESC;
  1. 댓글 많은 순 정렬
SELECT post_id, COUNT(*) AS 댓글수
FROM COMMENTS
GROUP BY post_id
ORDER BY 댓글수 DESC;
  1. post_type이 photo인 게시물을 우선 정렬
SELECT *
FROM POSTS
ORDER BY
  CASE
    WHEN post_type = 'photo' THEN 1
    WHEN post_type = 'video' THEN 2
  END,
  CREATION_DATE DESC;

✅ 테이블 생성 및 조인 실습

🔸 부서/사원 테이블 생성

CREATE TABLE DEPARTMENTS (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50) NOT NULL
);

CREATE TABLE EMPLOYEES (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50) NOT NULL,
    dept_id NUMBER
);

🔸 JOIN

SELECT E.ID, E.NAME, E.DEPT_ID, D.NAME AS DEPT_NAME
FROM EMPLOYEES E
JOIN DEPARTMENTS D ON E.DEPT_ID = D.ID;

🔸 게시글 + 사용자 JOIN 예시

SELECT P.POST_ID, U.USERNAME, U.EMAIL, P.CONTENT
FROM POSTS P
INNER JOIN USERS U ON P.USER_ID = U.USER_ID;

🔸 해시태그로 게시물 조회

SELECT PT.POST_ID, P.CONTENT, H.TAG_NAME
FROM POST_TAGS PT
INNER JOIN HASHTAGS H ON PT.TAG_ID = H.TAG_ID
INNER JOIN POSTS P ON PT.POST_ID = P.POST_ID
WHERE H.TAG_NAME LIKE '%일상%'
ORDER BY PT.POST_ID;

🧠 요약

  • 스프링 JDBC 기반 CRUD 기능 구현 및 테스트
  • SQL에서 정렬 (ORDER BY)과 그룹핑 (GROUP BY) 복습
  • CASE, JOIN, 문제 연습으로 SQL 활용 능력 향상
  • 관계형 데이터베이스의 테이블 관계를 이해하고 조인 활용 능력 강화

0개의 댓글