PostgreSQL 9

[PostgreSQL] 순차적으로 증가하는 숫자형 컬럼 중간에 비어있는 값(누락된 값)을 조회

PostgreSQL에서 특정 숫자형 컬럼이 순차적으로 증가하는 경우, 중간에 비어있는 값(누락된 값)을 찾으려면 generate_series()를 활용할 수 있어.방법 1: generate_series() 활용WITH missing_numbers AS ( SELECT generate_series(MIN(id), MAX(id)) AS num FROM your_table)SELECT numFROM missing_numbersLEFT JOIN your_table ON missing_numbers.num = your_table.idWHERE your_table.id IS NULL; ✅ 설명generate_series(MIN(id), MAX(id))를 사용해 id 컬럼의 최소값부터 최대값까지의 연속된 ..

Develop 2025.02.04

[PostgreSQL] UNIQUE Key 생성 방법 총정리

데이터베이스를 설계할 때, 특정 컬럼이나 컬럼 조합이 중복되지 않도록 보장하는 UNIQUE Key 설정은 매우 중요합니다. PostgreSQL에서는 다양한 방법으로 UNIQUE 제약 조건을 설정할 수 있으며, 각 방법마다 사용 목적과 장점이 다릅니다. 이번 글에서는 PostgreSQL에서 UNIQUE Key를 생성하는 모든 방법을 예제와 함께 살펴보겠습니다.1. UNIQUE 제약 조건 (Constraint) 사용하기가장 기본적인 방법으로, 테이블을 생성할 때 특정 컬럼에 UNIQUE 제약 조건을 부여하는 방식입니다.1.1 단일 컬럼에 UNIQUE 설정CREATE TABLE users ( id SERIAL PRIMARY KEY, email TEXT UNIQUE); 위 예제에서는 email 컬럼에..

Develop 2025.02.04

[PostgreSQL] SELECT 데이터를 INSERT하는 방법

PostgreSQL에서는 INSERT INTO ... SELECT 구문을 사용하여 기존 테이블에서 데이터를 조회(SELECT)하고 이를 새로운 테이블에 바로 삽입할 수 있습니다. 이 방법은 데이터 마이그레이션이나 백업, 데이터 가공 후 저장 등의 작업에 유용합니다. 아래에 예제와 함께 자세히 설명하겠습니다.1. 기본 구문INSERT INTO target_table (column1, column2, column3, ...)SELECT column1, column2, column3, ...FROM source_tableWHERE 조건; target_table: 데이터를 삽입할 테이블source_table: 데이터를 조회할 테이블column1, column2, ...: 삽입하거나 조회할 컬럼들WHERE 조건:..

Develop 2025.01.22

[PostgreSQL] 함수(function)나 프로시저(procedure) 내용을 검색하거나 조회하는 방법 : 한방쿼리

PostgreSQL에서 함수(function)나 프로시저(procedure)의 소스 내용에 특정 텍스트를 검색하려면, 함수 본문을 저장하는 시스템 카탈로그인 **pg_proc**의 prosrc 컬럼을 활용하면 됩니다. 아래에 이를 수행하는 구체적인 방법을 정리하였습니다.1. pg_proc에서 소스 내용 검색pg_proc.prosrc 컬럼은 함수 또는 프로시저의 본문(소스 코드)을 포함합니다. 특정 키워드를 검색하려면 다음과 같은 SQL 쿼리를 사용할 수 있습니다.특정 키워드 검색SELECT nspname AS schema_name, proname AS function_name, prosrc AS function_bodyFROM pg_procJOIN pg_namespace ON pg_..

Develop 2025.01.07

[PostgreSQL] 숫자를 금액단위 3자리마다 콤마로 변환하는 방법

PostgreSQL에서 숫자를 금액 단위로 표시할 때, 3자리마다 콤마(,)를 찍어 가독성을 높이는 것이 중요합니다. 예를 들어, 1000000이라는 숫자를 1,000,000처럼 변환하여 출력하면 금액을 쉽게 인식할 수 있습니다. 이번 포스트에서는 PostgreSQL에서 숫자를 3자리마다 콤마로 구분하여 문자열 타입으로 변환하는 방법을 예제를 통해 설명하겠습니다.1. to_char() 함수 소개PostgreSQL에서는 숫자 형식을 문자열로 변환할 때 주로 to_char() 함수를 사용합니다. 이 함수는 다양한 형식을 적용하여 숫자를 문자열로 변환할 수 있는데, 특히 금액 단위 표시에 유용합니다.to_char() 함수 구문to_char(number, '형식')number: 변환하려는 숫자.'형식': 숫자를..

Develop 2024.10.22

[PostgreSQL] 여러행을 한줄로 조회 Row to Column

PostgreSQL에서 여러 행의 값을 특정 구분자를 넣어 한 줄로 출력하는 방법은 다양한 상황에서 유용하게 사용될 수 있습니다. 예를 들어, 여러 열 값을 하나의 문자열로 결합하거나, 특정 그룹에 대한 데이터를 한 줄로 표현할 때 사용됩니다. 이를 가능하게 하는 대표적인 함수가 STRING_AGG() 함수입니다.이번 글에서는 PostgreSQL에서 행 데이터를 구분자를 이용해 한 줄로 표현하는 방법에 대해 알아보겠습니다.1. STRING_AGG() 함수란?STRING_AGG() 함수는 PostgreSQL에서 문자열 집합을 구분자로 연결하여 하나의 문자열로 결합해주는 집계 함수입니다. 이 함수는 주로 여러 행을 하나의 문자열로 변환할 때 사용됩니다. 특정 컬럼의 값을 원하는 구분자(쉼표, 공백 등)를 넣..

Develop 2024.10.21

[PostgreSQL] 오브젝트 안에서 로그 찍기 - RAISE 사용해서 출력

1. RAISE 문이란?RAISE 문은 PostgreSQL에서 메시지를 출력하거나 예외를 발생시키는 데 사용하는 명령어입니다. 주로 함수나 트리거 내부에서 사용되어 디버깅, 에러 처리 또는 경고 메시지 출력을 위해 활용됩니다. RAISE 문은 크게 다음과 같은 형태로 사용할 수 있습니다:NOTICE: 일반적인 정보 메시지를 출력.INFO: 추가 정보를 제공할 때 사용.WARNING: 경고 메시지를 출력.EXCEPTION: 오류를 발생시키고 트랜잭션을 중단.2. RAISE 사용법2.1 기본 문법RAISE 문은 출력하고자 하는 메시지의 유형과 메시지 내용을 지정하는 형태로 사용됩니다. PostgreSQL에서 로그를 찍을 때는 주로 NOTICE나 INFO를 사용합니다.RAISE [ NOTICE | INFO |..

Develop 2024.10.11

[PostgreSQL] Random 함수 랜덤으로 목록 조회 및 숫자생성

PostgreSQL에서 무작위 값을 생성하는 데 사용되는 random() 함수는 데이터베이스에서 임의의 숫자를 생성할 때 유용하며, 다양한 상황에서 활용될 수 있습니다. 예를 들어, 샘플 데이터 생성, 무작위 레코드 선택, 확률적인 처리 등에 사용됩니다. 1. random() 함수란?PostgreSQL에서 random() 함수는 0 이상 1 미만의 부동 소수점 값(float) 을 반환하는 함수입니다. 이 함수는 난수를 생성하는 데 사용되며, 기본적으로 반환되는 값의 범위는 다음과 같습니다.범위: 0 ≤ random() 기본 사용법:SELECT random(); 실행 시, random()은 매번 다른 소수점 값을 반환합니다.SELECT random();-- 예시 출력: 0.726374829498291  2..

Develop 2024.10.10

PostgreSQL에서 한글 ORDER BY 정렬 문제 해결하기 COLLATE

데이터베이스를 사용할 때 정렬은 매우 중요한 작업입니다. 특히 한글 데이터를 다루는 경우, PostgreSQL에서 ORDER BY 절을 사용할 때 한글 정렬이 예상과 다르게 동작하는 문제를 경험할 수 있습니다. 이 글에서는 이러한 한글 정렬 문제를 해결하는 방법을 알아보겠습니다.1. 문제 상황PostgreSQL에서 한글 데이터를 ORDER BY로 정렬하면 한글이 올바르게 정렬되지 않는 경우가 있습니다. 예를 들어, 다음과 같은 데이터를 생각해봅시다.CREATE TABLE employees ( id SERIAL PRIMARY KEY, name VARCHAR(50));INSERT INTO employees (name) VALUES('김영희'),('이민수'),('박철수'),('최지수'); 위 데이터..

Develop 2024.10.08