항해99 33일차 TIL1 - SQL을 배워야 하는 이유
밀린 기술 부채를 해결해야하는 날이 도래했습니다.
제가 SQL을 공부하는 이유는 최적화를 하기 위함입니다. JPA 환경에서 쿼리 최적화를 위해 JPQL, QueryDSL 을 활용한다고 합니다. 결국 JPQL도 SQL이기 때문에 SQL을 학습하려고 합니다. SQL > JPQL > QueryDSL 을 순차적으로 학습해보려고 합니다. 스파르타코딩클럽에서 제공해주는 이범규 튜터님의 SQL 강의를 수강하였습니다.
데이터베이스를 사용하는 이유
데이터베이스는 저장 용도 그 이상을 의미합니다. 많은 양의 데이터를 효율적으로 관리(조회/수정/삭제)할 수 있기 때문입니다.
SQL을 사용하는 이유
데이터를 읽어오는 과정인 "R (Read)"를 엄청나게 편하게 만들어줍니다. 그리고, 데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원합니다.
READ에 집중해야 하는 이유
아가 개발자들은 보통 테이블을 설계하거나 삭제, 수정 권한이 주어지지 않는다고 합니다. 데이터를 효율적으로 조회하는 것만으로도 충분하다는 범규님의 말씀이 있었습니다. 개발자 친구에게도 들었던 말이었는데 다시 들으니 SQL을 어떤식으로 공부해야할지 감이 잡히네요!
이론을 공부하기보다는 데이터를 조회할 때 어떤 방식으로 해야할지 실제로 쿼리를 짜보는 식으로 학습을 진행했습니다.
WHERE, JOIN 그리고 SUBQUERY
JPA를 사용하기 때문에 jpql을 사용할 것 같은데요. jpql에도 WHERE, JOIN, 서브쿼리 기능이 존재합니다. 그리고 가장 유용하게 사용할 것 같다. 왜 이것들이 필요하지 제 나름대로 정리해보았습니다.
WHERE
JPA를 사용하면서 굳이 필요없는 데이터까지 불러왔던 적이 있었습니다. WHERE을 사용하면 필요한 데이터만 불러와 최적화를 진행할 수 있을 것 같습니다.
JOIN
당근마켓 클론코딩 ERD - ERDclound 대부분의 테이블은 연관관계가 존재합니다. JOIN문을 잘 활용해서 원하는 데이터를 조회할 필요가 있을 것 같습니다.
SUBQUERY
WHERE, JOIN은 비교적 간단해서 몇 번 실습을 통해 예제 문제들을 다 풀 수 있었는데요. 서브쿼리는 아직 참 어려운 것 같습니다. 공부하면서 느낀 서브쿼리의 장점은 쿼리문의 가독성을 높여준다는 것이었습니다. 조금씩 정복해나가야 할 것 같습니다.