개발 일지/SQL

SQL 공부의 필요성

미숫가루설탕많이 2023. 7. 14. 17:23
학습 이유

 

그동안 Spring Boot 기반의 프로젝트를 진행하면서 JPA를 사용했기 때문에 별도로 SQL문을 작성하지 않아도 데이터베이스 조작이 가능했다. 또한, 프로젝트에서 기본 CRUD에 대한 작업만 진행했어서 JPA의 한계점이라던가 SQL 문법의 필요성을 느끼지 못했던 것 같다.

 

하지만 프로젝트 기간이 끝나고 유지보수를 위해 코드를 살피는 도중 N+1 문제가 발생하는 것을 확인했고, 주요 도메인에는 1:N 관계의 테이블이 많아서 (구글링하면 나오는 일반적인 방법들)fetch join이나 @EntityGraph로는 해결할 수 없었다. 그래서 QueryDSL을 공부해서 해결하려고 생각중이었다.

 

그리고 JPA는 편리한 기능을 제공하긴 하지만 대량의 데이터를 처리하거나 복잡한 쿼리를 실행하기에는 한계가 있다는 점을 알게 되었다.

 

비단 위와 같은 문제들 때문이 아니더라도 백엔드 개발자라면 SQL을 이해하고 작성할 수 있어야 된다는 생각이 들었다. 데이터베이스와 상호작용하고 데이터를 효율적으로 관리하는 데에 SQL문법은 필수적이기 때문에..

 

그리하여 SQL 공부의 필요성을 느끼고 공부하고 있다. (인프런 강의 및 프로그래머스 SQL 문제 활용)

 

 

 

 

SQL이란?

 

SQL이란 Structured Query Language의 약자로, 관계형 데이터베이스 시스템에서 데이터를 관리하고 조작하기 위한 표준화된 언어이다.

 

JPA가 쿼리를 다 만들어 주는데 왜 SQL 작성 능력이 필요할까?

그 이유는 다음과 같다.

  1. 복잡한 쿼리 작성 : JPA는 간단한 CRUD 작업에 효과적이지만, 복잡한 쿼리를 작성해야 하는 경우에는 SQL이 필요하다. SQL을 직접 작성함으로써 데이터베이스에서 복잡한 쿼리를 실행할 수 있으며, 성능을 최적화하거나 특정한 데이터를 추출하기 위해 유연하게 작성할 수 있다.

  2. 성능 최적화 : 대량의 데이터를 다루거나 복잡한 조인 작업을 수행해야 할 때 SQL을 사용하면 데이터베이스 성능을 효과적으로 최적화할 수 있다.

  3. 데이터베이스 특성 : 데이터베이스 시스템이 제공하는 다양한 기능과 특성을 활용할 수 있다. (트랜잭션 관리, 제약 조건 설정, 인덱스 생성, 뷰 등)

  4. 다른 데이터베이스 시스템과의 호환성 : SQL은 대부분 관계형 데이터베이스 시스템에서 공통으로 사용되는 표준화된 언어이다. 조금씩은 다를 수 있지만, 하나를 제대로 알아두면 금방 적응해서 다양한 데이터베이스 시스템에서 작업할 수 있다.

'개발 일지 > SQL' 카테고리의 다른 글

[SQL] ANSI Join  (0) 2023.08.01
[DB] SQL / NoSQL  (0) 2023.01.30
[DB] SQL  (0) 2023.01.30