다중 속성 값 저장
소개
- DB에 값을 저장할 때 하나의 컬럼에 다중속성값을 저장해야 할 때가 있다. (게시판 태그), 이 때 PostgreSQL에서의 처리방법을 알아본다.
- 기존에 MySQL, MariaDB를 사용하다가 현회사에서 PostgreSQL를 사용하게 되었고 이번에 SQL 안티패턴 책으로 스터디를 진행하다가 PostgreSQL에서는 다른 방법으로 처리할 수 없을 까? 라는 생각으로 검색을 해보다가 Array타입을 보게 되었고 이걸로 처리할 수 있을 것 같다는 생각이 들었다.
사용방법
배열 컬럼 생성
alter table khj_study
add test varchar(10)[];
추가
insert into postgres.public.khj_study values (1, array['a', 'b']);
insert into postgres.public.khj_study values (2, array['a', 'b', 'c']);
insert into postgres.public.khj_study values (3, array['a']);
조회
- any: 배열에 조건하는 값이 있는 지 검사
- all: 배열과 조건이 전부 일치하는 지 검사
select * from postgres.public.khj_study
where 'a' = any(at);
select * from postgres.public.khj_study
where 'a' = all(at);
업데이트
- array_append: 내장함수로 배열값에 값을 추가한다.
- array_remove: 배열값에 값을 지운다.
- 더 많은 함수들
update postgres.public.khj_study
set
at = array_append(at, 'd')
where
id = 2;
update postgres.public.khj_study
set
at = array_remove(at, 'd')
where
id = 2;
--
참고 사항
- SQL Antipatterns 2장 무단횡단
- https://www.postgresql.org/docs/current/functions-array.html
'정리' 카테고리의 다른 글
개발환경 구축하기 - 쿠버네티스 (0) | 2022.11.11 |
---|
댓글