
📚 이번주엔 뭘 배웠지?
[수업 과정]
1) 데이터 타입
- 정수(tinyint / int / bigint)의 차이와 실제로 id 컬럼을 bigint로 변경하는 실습
- 실수(decimal)와 고정 소수점 vs 부동소수점
- 문자 타입(char, varchar, text)의 차이
- 이미지·파일용 blob
- 옵션이 제한된 enum
- 날짜 타입(date, datetime), default current_timestamp
2) 제약 조건(PK, FK, UNIQUE, NOT NULL)
- FK 삭제 및 재추가
- on delete / on update 옵션 테스트 (restrict, cascade, set null)
- unique 삭제는 index 삭제가 필요하다는 점
ex) on delete/on update 제약조건 변경 예시
alter table post add constraint post_fk foreign key(author_id)
references author(id) on delete set null on update cascade;
3) 조건문 · 패턴 검색
- like, regexp
- cast / date_format 등 타입 변환
4) 트랜잭션(Transaction)
- start transaction ~ commit / rollback
- 프로시저로 rollback 자동 처리
- 멀티스레드 환경에서의 동시성 문제
5) DB 격리수준(Isolation Level)
-- DB의 트랜잭션끼리 서로 간섭 못하도록(동시성 문제) 두는 장치
- read uncommitted → dirty read
- read committed → non-repeatable/phantom read
- repeatable read → lost update 발생
- select for update로 lock 걸기
- serializable의 성격
- 낙관적 락 개념
- Redis로 동시성 해결하는 패턴
6) JOIN · 집계함수 · 그룹핑
- inner / left / right join의 차이
- union, union all
- 서브쿼리 (where / column / from)
- group by + count, avg, sum 활용
- 이번 주는 “DB를 실제로 다룰 수 있는 능력”을 확실히 다지는 주차
[코딩테스트-알고리즘]
자료구조 : 큐, 해쉬맵, 스택
함수 구현 : 소수 판별, 최소공배수, 최대공약수, 이항계수
String 함수 : contains, isDigit, matches(자주쓰지말기)
cs : 버퍼
👊 어떤 문제점이 있었지?
[수업 과정]
- 쿼리작성시에 날짜타입 변환하기 위해 cast를 사용시 문법을 자주 헷갈렸다
ex) select * from post where cast(date_format(created_time, '%m') as unsigned) = 1;
- 강사님이 내주는 실습문제를 조인과 서브쿼리를 활용하여 해결하는데 헷갈리는 부분이 많았다.
ex) 글 안쓴 사람도 0개로 카운트해서 출력
- 트랜잭션과 동시성 부분은 개념이 많고 실습도 중요해서 처음엔 머릿속에서 잘 정리가 안 됐다.
- repeatable read에서 값이 “스냅샷처럼 고정되는 이유”가 와닿기까지 시간이 좀 걸렸다.
[코딩테스트-알고리즘]
자료구조에 대해 몰라도 너무 몰라서 자바책을 꺼내 볼수 밖에 없었다.(물론 chatGpt의 도움이 많이 컸다)
함수에 대한 활용 , 함수 구현하는 방법을 공부를 해도 자주 까먹는다.
🙏 무엇을 깨달았고, 어떤 생각이 들었지?
[수업 과정]
- 이전직장에서 join을 이용한 쿼리를 조회했었지만 잘 모르고 조회했었던거 같다는 생각이 들었다.
- cascade 조건이 흥미로웠다.
실습을 통한 쿼리를 직접 작성하고 결과를 확인해야
정말 자신이 이해하고 있는가에 대한 느낌에 조금 더 가까워지는 것 같다.
또한 기초가 탄탄해야 복잡한 쿼리와 최적화도 자연스럽게 이해할 수 있을거 같다.
이번 주는 “왜 데이터베이스가 어려운지, 그리고 왜 중요한지”를 몸으로 느낀 주였다.
[코딩테스트-알고리즘]
문제를 풀어서 양을 늘리는것도 중요하지만 내가 푼 문제를 확실히 이해하고 있는지가 더 중요한거 같다.
스터디를 해야 하는건지에 대한 생각이 들었다. 아직 고민중이다.
😄 결과적으로, 현재 나의 상태는?
[수업 과정]
복잡한 쿼리에 대한 숙련도는 아직 부족하다.
[코딩테스트-알고리즘]
내가 코드를 작성하면서 코드의 설명도 할줄 알만큼의 이해에 대한 깊이가 없는거 같다고 느꼈다.
본격적인 알고리즘(DP, DFS, BFS 등)에 대한 공부 과정에 들어가고 있다.
👨🚀 앞으로 어떻게 하는게 좋을까?
다음주 DB프로젝트들어가기전에 강사님이 공유해주신 구글시트 자료를 통해 기초를 탄탄히 할 예정이다.