개발 일지/SQL 4

[SQL] ANSI Join

SQL 문법을 공부하던 도중, 대부분의 문법은 비슷하지만 MySQL과 Oracle에서 사용되는 구문에서 조금 차이가 있다는 점을 알게 되었다. 그럼 각각의 데이터베이스에 대한 구문 정보를 모두 알아야 하나? 물론 모두 알아두면 좋겠다만, 조금 비효율적이라는 생각이 든다. 또한 MySQL로 작업하다 Oracle로 DB를 변경해야 하면 다 찾아서 변경해야되는데 여간 번거로운 일이 아닐 것이다. ANSI 조인은 위와 같은 상황에서 아주 유용하게 쓰일 것이다. ANSI 조인이 뭔데? ANSI 조인은 데이터베이스에서 테이블을 결합할 때 사용되는 표준 SQL 문법 중 하나이다. 이러한 조인은 명시적으로 조인 조건을 정의하여 테이블을 연결한다. SQL 표준이기 때문에 여러 데이터베이스 시스템에서 지원된다. 그러니까 ..

개발 일지/SQL 2023.08.01

SQL 공부의 필요성

학습 이유 그동안 Spring Boot 기반의 프로젝트를 진행하면서 JPA를 사용했기 때문에 별도로 SQL문을 작성하지 않아도 데이터베이스 조작이 가능했다. 또한, 프로젝트에서 기본 CRUD에 대한 작업만 진행했어서 JPA의 한계점이라던가 SQL 문법의 필요성을 느끼지 못했던 것 같다. 하지만 프로젝트 기간이 끝나고 유지보수를 위해 코드를 살피는 도중 N+1 문제가 발생하는 것을 확인했고, 주요 도메인에는 1:N 관계의 테이블이 많아서 (구글링하면 나오는 일반적인 방법들)fetch join이나 @EntityGraph로는 해결할 수 없었다. 그래서 QueryDSL을 공부해서 해결하려고 생각중이었다. 그리고 JPA는 편리한 기능을 제공하긴 하지만 대량의 데이터를 처리하거나 복잡한 쿼리를 실행하기에는 한계가 ..

개발 일지/SQL 2023.07.14

[DB] SQL / NoSQL

데이터베이스는 크게 관계형 데이터베이스와 비관계형 데이터베이스로 구분한다. 관계형 데이터베이스는 SQL을 기반으로, 비관계형 데이터베이스는 NoSQL로 데이터를 다룬다. 이 둘은 만들어진 방식과 저장하는 정보의 종류, 저장하는 방법 등에서 차이가 있다. SQL(구조적 쿼리 언어)은 일관된 데이터 조작 언어를 제공하지만 NoSQL 구현은 서로 다른 기술에 따라 달라진다. 먼저 관계형 데이터베이스는 특정한 형식을 지키기 때문에 데이터를 사용할 때 수월하다. SQL을 활용해 원하는 정보를 쿼리 할 수 있는데, 이 말은 스키마가 뚜렷하게 보인다는 말과 같다. 즉, 관계형 데이터베이스에서는 테이블 간의 관계를 직관적으로 파악할 수 있다. 대표적인 관계형 데이터 베이스는 MySQL, Oracle, SQLite, P..

개발 일지/SQL 2023.01.30

[DB] SQL

SQL(Structured Query Language)는 구조화된 쿼리 언어라고 해석할 수 있다. SQL은 데이터베이스 언어로, 주로 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다. SQL 문을 통해 데이터베이스에서 정보를 저장, 제거, 검색 및 업데이트를 할 수 있다. 여기서 query는 '질의문'이라는 뜻으로, 예를 들어 검색을 할 때 기존에 존재하고 있는 데이터를 검색어로 필터링하기 때문에 입력하는 검색어도 일종의 쿼리라고 할 수 있다. 데이터베이스 관련 명령어 데이터베이스 생성 CREATE DATABASE 데이터베이스_이름; 데이터베이스 사용 USE 데이터베이스_이름; 테이블 생성 CREATE TABLE user ( id int PRIMARY KEY AU..

개발 일지/SQL 2023.01.30