개발Story
[POSTGRESQL] 시퀀스값 컬럼값 order by로 update하기.
DB/postgresql 2023. 6. 8. 16:22

PostgreSQL에서 기존 테이블의 시퀀스 값을 정렬하여 업데이트하는 방법 정렬 기준을 설정합니다. 기본적으로 테이블의 기본 키 또는 고유한 식별자 컬럼을 기준으로 정렬하는 것이 일반적입니다. 예를 들어, 테이블에 "id"라는 고유한 식별자 컬럼이 있다고 가정해보겠습니다. 정렬된 시퀀스 값을 가지는 임시 테이블을 생성합니다. 이를 위해 다음 쿼리를 실행합니다. CREATE TEMPORARY TABLE temp_sequence AS SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS new_sequence FROM your_table ORDER BY id; 위의 쿼리는 "your_table"이라는 테이블의 "id" 컬럼을 기준으로 정렬된 순서로 각 행에 새로운 시퀀스 값을 ..

[PostgreSQL] 배열 함수(array_agg, array_to_string)
DB/postgresql 2022. 2. 27. 16:09

프로젝트를 진행하면서 db의 row들을 string으로 받아올 필요가 있었다. PostgreSQL에서 배열함수(집계)를 제공한다. array_agg, array_to_string [table array] name group 효정 오마이걸 모모 트와이스 보나 우주소녀 row를 array로 출력을 하면 [ row들을 배열로 출력 array_agg() ] select group,array_agg(name) from array group by group; 결과 -> {효정,모모,사나} 결과는 {} 배열로 감싸진 형태로 나오게 된다. java에서 string으로 처리를 하려면 array_to_string 함수를 더해서 사용하면 된다. [ 배열을 string으로 출력 array_to_string() ] select..

[PostgreSQL] EXITS 연산자
DB/postgresql 2022. 2. 13. 18:46

query를 사용하다보면 존재여부를 판단할 일이 많다. 보통 select count(*) 를 쓰는 경우를 많이 봤는데 기능은 동작하지만 성능면에서 fullsacn을하여 좋지 않다. 존재여부를 알 수 있는 EXITS연산자를 알아보자. 단어의 의미를 파악하면 EXITS : 동사로 존재하다.(v) =>단어 그대로 받아 들이면 될 것 같다. 조건으로 주어 존재여부를 판단하는 연산식이다. 존재 여부만 판단하고 break를 하여 연산 시 부하가 줄어든다고 한다. [문법] EXITS(subquery) NOT EXITS (subquery) [사용법] SELECT * FROM zzang9iu m WHERE EXISTS ( SELECT 1 FROM zzang9iu r WHERE r.z_id = m.z_id AND z.re..

article thumbnail
[POSTGRESQL] 계층형 쿼리, RECURSIVE
DB/postgresql 2022. 1. 22. 18:03

PostgreSQL에서는 데이터의 트리구조를 표현하기 위해서는 RECURSIVE 키워드를 사용하여 재귀적인 쿼리를 사용할 수있다고 한다. 일단 RECURSIVE 의 사전적인 의미를 알아보면 재귀라는 의미이다. 재귀란 어떠한 것을 정의할 떄 자기 자신을 참조한다는 뜻이다. 즉 자기자신을 참조하여 데이터 트리구조를 표현한다고 보면 된다. 샘플 데이터를 통해 예제를 알아보겠다. 예제 블로그 : http://happy1week.blogspot.com/2012/07/postgresql_19.html SQL> CREATE TABLE BOM( ITEM_ID INTEGER NOT NULL, PARENT_ID INTEGER, ITEM_NAME CHARACTER VARYING(20) NOT NULL, ITEM_QTY IN..

postgresql function만들기. (feat. for문)
DB/postgresql 2021. 2. 7. 16:46

Dbeaver라는 db툴을 이용해 postgresql function을 만들 수 있다. function을 만드는 이유는 긴 sql문을 간편하게 실행할 수 있는 장점이 있다. CREATE OR REPLACE FUNCTION 함수명 () RETURNS integer LANGUAGE plpgsql AS $function$ declare r record; --> 1.함수명과 파라미트. 리턴값을 정의해준다. BEGIN for r in select 컬럼명 from 테이블 loop --> 2. for문을 돌릴 테이블을 정의한다. INSERT INTO VALUES ON CONFLICT (충돌id) DO UPDATE SET 컬럼명 = r.컬럼명 end loop; return 1; --> 3. 원하는 sql문을 작성한다...