1. 오늘 내 기분 한 줄 요약
"Java 알고리즘도 벅찬데 SQL 조인 지옥까지... 그래도 여러가지 찾아보면서 겨우 숨통 트여가는 중! 맞겠지..?" + 강사님 설명도 계속 알아들으려고 노력하는중 ㅠㅠ
2. JOIN(조인): "왜 표를 굳이 찢어놨을까?"
- 핵심 개념: 흩어져 있는 여러 개의 테이블(표)을 공통된 기둥(Column)을 기준으로 옆으로 붙여서 하나로 만드는 작업이야.
- 왜 이 짓을 할까?: 데이터 중복을 막고 관리를 편하게 하려고! 쪼개진 데이터를 다시 합쳐서 한눈에 보려고 조인을 쓰는 거야.
3. 내가 했던 "뭔 개소리야?" 완벽 정리 (The 'What is this' List)
① "레프트? 라이트? 기준 마스터가 뭐야?"
- INNER JOIN: 양쪽 표에 짝이 있는 '완벽한 커플'만 보여줘.
- LEFT JOIN: 왼쪽 표(마스터)는 무조건 다 보여주고, 짝 없는 애들은 빈칸(NULL)으로 둬. 실무에서 제일 많이 써!
-- 예: 사원 이름과 부서 이름이 둘 다 있는 데이터만 조회 SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno;
② "벤더(Vender)랑 ANSI를 왜 따로 해?"
- Vender(사투리): FROM에 콤마(,) 찍는 옛날 방식이야.
- ANSI(표준어): JOIN이랑 ON을 딱 명시하는 요즘 방식! 가독성이 훨씬 좋아서 이걸 추천해.
-- Vendor 방식 (Oracle 사투리)
SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;
-- ANSI 방식 (글로벌 표준어 - 권장!)
SELECT e.ename, d.dname
FROM emp e JOIN dept d ON e.deptno = d.deptno;
③ "셀프 조인(Self Join)? 점(.)은 뭐여?"
- 정리: 상사 이름 찾을 때처럼 내 표를 내가 다시 불러와서 합치는 거야.
- 점(.)의 정체: 이름이 똑같은 표가 두 개니까 e.ename, m.ename처럼 점을 찍어서 주소를 정해 주는 거지.
-- 사원(e)의 상사(m) 이름을 알고 싶을 때
SELECT e.ename AS "사원명", m.ename AS "상사명"
FROM emp e
JOIN emp m ON e.mgr = m.empno;
-- 사원의 매니저번호(mgr)와 매니저의 사번(empno)을 매칭!
④ "8.7초? 옵티마이저는 또 뭐래?"
- 옵티마이저: "어떻게 해야 제일 빠를까?" 고민하는 컴퓨터의 뇌야.
- 실행 계획: 그 뇌가 짜놓은 경로를 보여주는 지도고, 인덱스는 그 길을 빨리 찾게 해주는 목차야.
4. 실습 트러블슈팅 (Troubleshooting)
- Error Code 1146 (Table doesn't exist): "표가 없대!"
- 원인: madangdb 서랍을 열고 있는데 urecadb에 있는 표를 찾아서 그래.
- 해결: USE urecadb; 명령어로 사용할 서랍을 정확히 열어주자!
- -- 해결책: 사용할 데이터베이스를 먼저 선택하고 실행하세요!SELECT * FROM emp;
- USE urecadb;
5. 오늘의 생존 전략 & 추천 강의
- 알고리즘 vs SQL: 둘은 별개야. 알고리즘 못 한다고 쫄지 말자.
- 추천 강의: 개념 흔들릴 땐 '데이터리안(Datarian)' 유튜브도 초반에 개념잡기 좋아서 진짜 이해 잘 돼! 추천! (더 심화 내용도 공개 되면 좋을텐데ㅠㅠ 아숩)
내일 수업은 서브쿼리!!!!!!!!!! 더 파이팅