PostgreSQL

    [PostgreSQL] 하나의 쿼리로 여러 row update하기

    하나의 쿼리로 여러 row update하는 법 update table_name as tb set column1 = data.column1, column2 = data.column2 from (values (1, 'column1_a', 'column2_a'), (2, 'column1_b', 'column2_b') ) as data(id, column1, column2) where 1 = 1 and tb.id = data.id values에 ()로 구분하여서 데이터 row를 넣어주고, 각 row의 컬럼이 어떤 컬럼을 의미하는지 넣어주면 됩니다.

    [Docker] SpringBoot와 PostgreSQL 이미지 docker-compose로 한 번에 관리하기

    들어가기 전에 기존에는 아래와 같이 AWS Beanstalk을 사용하여 개발용 SpringBoot(Backend)을 관리하였고, DB는 AWS RDS를 이용하였습니다. AWS 초심자다보니, 운영 어플리케이션을 AWS에 올리기 전에 미리 AWS를 사용해보자는 취지로 위와 같은 구조로 진행했었습니다. 하지만, 비용 이슈로 인해 개발용은 각자 로컬에서 띄우는 것이 맞다는 생각이 들었습니다. 이에 docker-compose를 통해 SpringBoot와 DB를 하나로 묶어서 띄워서 테스트할 수 있는 환경을 구성해 보았습니다. Front-End에서 Back-End 어플리케이션을 띄워 API 테스트가 필요했던 터라, docker-compose로 어플리케이션과 DB를 함께 묶어 손쉽게 테스트를 진행할 수 있도록 했습니..

    [PostgreSQL, Spring Data JPA] earthdistance를 이용하여 주어진 위도/경도에서 근처 장소 조회하기(Native Query)

    들어가며 프로젝트를 진행하면서, 지도상의 위치(위도/경도)와 범위(range)값을 받아서 범위 안에 속하는 빵집을 검색 API를 구현해야 했습니다. 현재 사용하고 있는 database는 postgreSQL이어서 postgreSQL의 거리 계산 관련하여 구글링하였습니다. 그 결과, postgreSQL에서 공식적으로 지원하는 earthdistance 모듈을 설치하여 geolocation을 다뤄보기로 했습니다. earthdistance는 지구가 타원형이 아닌 완벽한 구의 형태라고 가정하고 사용하는 모듈이기 때문에, 정밀한 거리 계산이 필요하다면 thirdparty에서 제공하는 postGIS를 쓰는 것도 좋은 방법일 것 같습니다. 단, postGIS는 postgreSQL이 공식적으로 지원하지는 않습니다. ear..

    [PostgreSQL] PGAdmin에서 실행계획 확인하기

    PGAdmin에서 실행계획 확인하기 실행하고자 하는 쿼리 상단에 explain(analyze,buffers)를 작성하고 실행하면 아래와 같이 실행 계획을 확인할 수 있습니다. explain(analyze,buffers) select ... from ... where ... 실행계획의 Index Scan 또는 Seq Scan을 통해 인덱스를 타서 쿼리가 실행되었는지 조회할 수 있습니다. Index Scan 부분이 인덱스를 타서 쿼리가 실행된 부분

    [SpringBoot, PostgreSQL] myBatis ?(물음표) 문자 사용하기

    myBatis에서 ?(물음표) 문자 사용하기 myBatis를 사용하는 프로젝트를 진행하다보면, 물음표를 문자로써 사용해야 하는데, 해당 부분에 parameter로 들고온 값이 들어가는 경우가 있습니다. 이럴 경우, CHR(63)을 '?' 대신 써주면 됩니다. '&' 역시 마찬가지로 문자로 사용하고 싶다면 CHR(38)을 대신 써주면 문자로 사용이 가능합니다. 사용 예시 만약, '?'를 그냥 쿼리문에 넣게되면 하기와 같은 결과를 도출하게 됩니다. // 만약, 아래와 같이 사용하게 되면, parameterType으로 지정한 값들이 들어갈 수 있습니다 // 필자의 경우는, '?'로 사용해도 쿼리는 제대로 돌아갔지만, jdbc.sqlonly에 의해 출력된 쿼리문에는 '?' 위치에 paramter로 지정한 값이 ..

    [SpringBoot, PostgreSQL] myBatis ?(물음표) 문자 사용하기

    myBatis에서 ?(물음표) 문자 사용하기 myBatis를 사용하는 프로젝트를 진행하다보면, 물음표를 문자로써 사용해야 하는데, 해당 부분에 parameter로 들고온 값이 들어가는 경우가 있습니다. 이럴 경우, CHR(63)을 '?' 대신 써주면 됩니다. '&' 역시 마찬가지로 문자로 사용하고 싶다면 CHR(38)을 대신 써주면 문자로 사용이 가능합니다. 사용 예시 만약, '?'를 그냥 쿼리문에 넣게되면 하기와 같은 결과를 도출하게 됩니다. // 만약, 아래와 같이 사용하게 되면, parameterType으로 지정한 값들이 들어갈 수 있습니다 // 필자의 경우는, '?'로 사용해도 쿼리는 제대로 돌아갔지만, jdbc.sqlonly에 의해 출력된 쿼리문에는 '?' 위치에 paramter로 지정한 값이 ..

    [MacOS Catalina] MySQL Community (version 8)와 DBeaver 설치 및 MySQL과 DBeaver 연동법

    JAVA 개발 시 사용하기 위한 MySQL을 설치하고, MySQL GUI 툴로 Sequel Pro를 설치해보고자 합니다. MySQL Community 버전 설치하기 일반적으로 homebrew가 깔려있다면, 터미널에서 손쉽게 명령어로 다운 받을 수 있습니다. 다만, 원래 gui로 다운받는 걸 좋아해서 mySQL 사이트에서 직접 다운 받아보도록 하겠습니다. 1. mySQL Community 다운로드 사이트에 들어간 후, 원하는 버전에 맞게 .dmg 파일로 다운로드 받습니다. 이때, 로그인을 하라고 뜨지만, "No thanks, just start my download"를 누르면 문제 없이 다운로드 됩니다. dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Co..