일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 예제
- xml
- 파이어버드
- Firebird
- Delphi
- Visual Basic
- 파라미터
- 인스톨
- c#
- 데이터베이스
- 델파이
- 셋업
- SDK
- winsock
- Visual Studio 2005
- 소니
- WIN32 SDK
- 시리얼 통신
- VB.NET
- 기초
- dll
- MFC
- 초보
- MySQL
- SQL
- 입문
- 설치
- 문자열
- PostgreSQL
- vb
- Today
- Total
프로그래밍 노트
PostgreSQL에서 배열형 컬럼 다루기 본문
PostgreSQL에서는 컬럼을 배열형으로 만들 수 있다.
● 배열형 컬럼 만들기
CREATE TABLE member(
id serial PRIMARY KEY,
name varchar(20),
age integer,
hobby varchar(100)[] -- 배열형 컬럼
);
테이블을 만들 때 위와같이 컬럼 타입뒤에 []를 붙이면 배열형 컬럼이 된다.
● 배열형 컬럼에 데이터 추가하기
INSERT INTO member (name, age, hobby)
VALUES('kim', 10, '{book, music}');
배열형 데이터를 {} 안에 ","로 구분해서 입력한다.
INSERT INTO member (name, age, hobby)
VALUES('lee', 12, '{game}');
데이터를 하나만 넣을 때는 위와 같이 쓴다.
INSERT INTO member (name, age, hobby)
VALUES('park', 11, ARRAY['movie','sing','craft']);
ARRAY를 사용하여 추가할 수도 있다.
ARRAY를 사용하면 각 항목별에 따옴표를 달아야 된다.
INSERT INTO member (name, age, hobby)
VALUES('hong', 9, '{baseball,soccer,swim, tennis,book}');
INSERT INTO member (name, age, hobby)
VALUES('ha', 15, '{golf, cartoon, drink, sing, dance}');
테스트용 데이터
● 배열형 컬럼을 가진 데이터 읽어오기
SELECT * FROM member;
--------------------------------------------------
1;"kim";10;"{book,music}"
2;"lee";12;"{game}"
3;"park";11;"{movie,sing,craft}"
4;"hong";9;"{baseball,soccer,swim,tennis,book}"
5;"ha";15;"{golf,cartoon,drink,sing,dance}"
배열형 컬럼은 대괄호에 각 항목들이 쉼표로 구분되어진다.
SELECT name, hobby[1] FROM member;
--------------------------------------------------
"kim";"book"
"lee";"game"
"park";"movie"
"hong";"baseball"
"ha";"golf"
배열형 컬럼의 첫번째 데이터만을 읽어 오기
SELECT name, hobby[2], hobby[3] FROM member;
--------------------------------------------------
"kim";"music";""
"lee";"";""
"park";"sing";"craft"
"hong";"soccer";"swim"
"ha";"cartoon";"drink"
배열형 컬럼의 두번째와 세번째 데이터를 읽어 오기
해당 순번에 데이터가 없으면 데이터가 안나온다.
SELECT name, hobby[2:5] FROM member;
--------------------------------------------------
"kim";"{music}"
"lee";"{}"
"park";"{sing,craft}"
"hong";"{soccer,swim,tennis,book}"
"ha";"{cartoon,drink,sing,dance}"
항목의 2번째에서 5번째 값을 읽어올 때는 위와 같이 쓴다.
SELECT * FROM member
WHERE hobby[1] = 'game';
--------------------------------------------------
2;"lee";12;"{game}"
첫번째 항목인 'game'인 것을 찾을 때
SELECT * FROM member
WHERE 'book' = ANY(hobby);
--------------------------------------------------
1;"kim";10;"{book,music}"
4;"hong";9;"{baseball,soccer,swim,tennis,book}"
항목 중에 book이 있는 것을 찾을 때
SELECT id, (SELECT COUNT(arrayColumn) FROM UNNEST(hobby) arrayColumn) as array_count
FROM member;
배열 컬럼에 항목이 몇개 들어있는지를 알고 싶을 때
● 배열형 컬럼을 가진 데이터 갱신하기
UPDATE member SET hobby = '{swim, movie, racing}'
WHERE id = 1;
배열 컬럼의 전체 항목을 바꿀 때
UPDATE member SET hobby[3] = 'sing'
WHERE id = 1;
배열 컬럼의 3번 째 항목을 바꿀 때
UPDATE member SET hobby[5] = 'fishing'
WHERE id = 1;
해당 필드의 항목이 3개있는 경우에 5번째 데이터를 변경하면 4번째는 NULL값이 들어간다.
UPDATE member SET hobby[2:4] = '{golf, sing, movie}'
WHERE id = 2;
구간을 지정해서 항목을 변경할 수 있다.
UPDATE member SET hobby = array_append(hobby, 'game')
WHERE id = 3;
배열 컬럼에 새로운 항목을 추가하고 싶을 때
------------------
포스트그레스큐엘은 너무 자료가 없다.
특히 우리나라에는 익숙해지는데 시간이 좀 걸릴 것 같다. -.-