개발Story
[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문을 작성한다...