티스토리 뷰
반응형
PostgreSQL의 jsonb 타입은 JSON 데이터를 저장하고 처리할 수 있는 강력한 기능을 제공합니다. 이 타입은 JSON 데이터를 바이너리 형태로 저장하여 검색과 수정이 더 빠르고 효율적입니다. 다음은 jsonb 타입을 사용하는 데이터 조회 및 업데이트 방법에 대한 설명과 예시입니다.
1. 테이블 생성
먼저, jsonb 타입을 포함한 테이블을 생성합니다.
CREATE TABLE example_table (
id SERIAL PRIMARY KEY,
data jsonb
);
2. 데이터 삽입
테이블에 JSON 데이터를 삽입합니다.
INSERT INTO example_table (data)
VALUES
('{"name": "John", "age": 30, "skills": ["Python", "SQL"]}'),
('{"name": "Alice", "age": 25, "skills": ["Java", "JavaScript"]}');
3. 데이터 조회
3.1. 특정 키의 값 조회
JSONB 데이터에서 특정 키의 값을 추출합니다.
SELECT data->>'name' AS name, data->>'age' AS age FROM example_table;
name | age
------+-----
John | 30
Alice | 25
3.2. 조건에 따른 데이터 필터링
JSONB 데이터에서 특정 조건을 만족하는 데이터를 조회합니다.
SELECT *
FROM example_table
WHERE data->>'name' = 'Alice';
3.3. 배열 값 검색
JSON 배열에 특정 값을 포함하는 데이터를 조회합니다.
SELECT *
FROM example_table
WHERE 'Python' = ANY (jsonb_array_elements_text(data->'skills'));
4. 데이터 업데이트
4.1. JSONB에 새 키 추가
기존 데이터에 새 키를 추가합니다.
UPDATE example_table
SET data = jsonb_set(data, '{city}', '"New York"')
WHERE id = 1;
4.2. JSONB 값 수정
기존 키의 값을 수정합니다.
UPDATE example_table
SET data = jsonb_set(data, '{age}', '35')
WHERE id = 1;
4.3. 배열에 값 추가
JSON 배열에 새 값을 추가합니다.
UPDATE example_table
SET data = jsonb_set(
data,
'{skills}',
(data->'skills')::jsonb || '"PostgreSQL"'
)
WHERE id = 1;
4.4. 키 삭제
특정 키를 삭제합니다.
UPDATE example_table
SET data = data - 'city'
WHERE id = 1;
5. 복합 예제: 조회와 업데이트
skills 배열에 SQL을 포함하는 사용자들의 나이를 5살 증가시킵니다.
UPDATE example_table
SET data = jsonb_set(data, '{age}', (data->>'age')::int + 5::text::jsonb)
WHERE 'SQL' = ANY (jsonb_array_elements_text(data->'skills'));
6. 성능 최적화를 위한 인덱스 생성
jsonb 데이터를 효율적으로 검색하려면 GIN (Generalized Inverted Index) 인덱스를 사용할 수 있습니다.
CREATE INDEX idx_data_jsonb ON example_table USING gin (data);
7. 정리
PostgreSQL의 jsonb 타입은 JSON 데이터의 유연한 저장과 강력한 쿼리 기능을 제공합니다. 위의 예제를 참고하여 다양한 방식으로 데이터를 조회하고 업데이트할 수 있습니다.
반응형
'DataBase > Postgresql' 카테고리의 다른 글
postgresql의 튜닝 시 확인하는 pg_stat_activity의 쿼리 글자 수 늘리기 (0) | 2024.06.17 |
---|---|
전화번호, 계좌 정보 등 개인정보 불용화 (0) | 2024.05.13 |
postgresql 요일 구하기 (0) | 2024.05.13 |
postgresql 파티션 테이블 생성 및 데이터 이관 (0) | 2024.05.09 |
테이블 사이즈 확인 (0) | 2019.08.13 |
반응형
최근에 올라온 글
- Total
- Today
- Yesterday
TAG
- index
- iOS5
- query 잘림
- Flashback
- MS-SQL
- linux
- 갤럭시S
- 아이폰4
- 인덱스
- 오라클
- recovery
- Managing Schema Objects
- parameter
- oracle
- tablespace
- 아이폰
- PostgreSQL
- postgresql pg_stat_activity
- 리눅스
- 윈도우
- 한글
- Backup
- 투싼
- SQLPlus
- postgresql jsonb index
- 독도
- postgresql jsonb
- iPhone
- 출시일
- PL/SQL
글 보관함