[TIL] 12월 2일 공부

Tape22·2020년 12월 2일
1

TIL

목록 보기
2/7
post-thumbnail

👩‍💻 새로 알게 된 내용

  1. Mysql 서브쿼리, join 3개 테이블
    https://futurists.tistory.com/17
    https://g4world.tistory.com/248
  2. docker 컨테이너에 이미지 여러 개 올리는 법
  3. database 이름 짓기

✅ 정리

  1. 서브쿼리와 join의 차이점
서브 쿼리: select title from B테이블 WEHRE id IN(select id from A테이블 WEHRE id <100) ;
join : select * from B테이블 as b join A테이블 as a on b.id = a.id;

그리고 3개의 테이블을 join해서 결과를 가져왔어야 했는데, 예를 들어 다음과 같이 A B C 테이블이 있다고 보자.

  • C 테이블에 있는 b_index들을 가져와서
  • B 테이블에 있는 해당 b_index들에 해당하는 정보를 가져오는데
  • B 테이블에 저장되어있는 A 테이블 a_index를 통해 A 테이블 정보도 함께 가져와서 출력하기

즉 3개의 테이블을 한꺼번에 참고해서 가져와야 하는 문제가 있었다.
그래서 INNER JOIN과 서브쿼리를 사용하여 정보를 한꺼번에 가져올 수 있도록 하였다.

select a.title, b.title, b.date 
from B테이블 as b 
inner join (select * from C테이블 where 조건) as c ON 조건
inner join A 테이블 as a ON 조건;

✅ INNER JOIN은 조건에서 일치하는 값이 있는 행만 반환함, INNER 명시 안해줘도 됨.

  1. 도커 컨테이너에 이미지 여러 개 올리는 법..은 그냥 docker-compose.yml 파일에서 밑에처럼 하나를 더 추가하면 된다.
컨테이너 이름:
    image: 이미지 명:태그
    ports:
      - "3000:3000" // 포트 번호
    depends_on:
      - redis   
    networks: 
       - backend
  1. database 이름 짓기
    테이블 명은 대문자, USER_TB처럼 테이블임을 명시해주는 것이 좋다.
    컬럼명은 user_name 이런 식으로 합성어인 경우에 카멜 케이스로 적어준다.

📖 더 공부할 것

데이터베이스 채팅, 리뷰 테이블 짜는 방식! 어떻게 해야 정규화의 이점을 가장 극대화할 수 있는지 그 경계를 더 깊게 공부해볼 것. 항상 느끼는 거지만 sql문은 하면서 까먹고 다시 찾아보면서 해서 시간이 오래걸린다. select * from 테이블 처럼 자유롭게 짤 수 있도록 노력해보자.
그리고 restAPI말고도 gragphQL이나 Typescript도 공부해보자.

👍 Better

JOIN 저번 프로그래머스 윈터코딩 테스트에서 풀지 못했던 유형이었는데 나름 빠르게 3개 테이블을 join할 수 있어서 뿌듯!

👎 Effort

데이터베이스의 세계란....DBA 분들은 최고다.

profile
문헌정보학과에서 개발자가 되어가는 중입니다. 기술 블로그는 홈으로 확인해주세요. https://tape22.tistory.com/

0개의 댓글