DB

[PostgreSQL] 기본 데이터 타입 정리 - Array

지과쌤 2020. 9. 1.
반응형

  • Character types / why should we use char instead of varchar?
  • Numeric types
  • Boolean types
  • Temporal types
  • UUID for storing Universally Unique Identifiers
  • Array for storing array strings, numbers, etc...
  • JSON stores JSON data
  • hstore stores key-value pair
  • User defined data

Array

postgresql 에서는 column을 including built-in type, user-defined type, enumerated type 등 모든 유효한 데이터 유형의 배열로 정의할 수 있다.

 

테이블 생성

CREATE TABLE contacts (
	id serial PRIMARY KEY,
	name VARCHAR (100),
	phones TEXT []
);

데이터 삽입

INSERT INTO contacts (name, phones)
VALUES('John Doe',ARRAY [ '(408)-589-5846','(408)-589-5555' ]);
INSERT INTO contacts (name, phones)
VALUES('Lily Bush','{"(408)-589-5841"}'),
      ('William Gate','{"(408)-589-5842","(408)-589-58423"}');

 

데이터 뽑아내는 쿼리

SELECT
	name,
	phones
FROM
	contacts;

특정 번째의 값도 뽑아낼 수 있다.

SELECT
	name,
	phones [ 1 ]
FROM
	contacts;

where절도 사용가능하다!

SELECT
	name
FROM
	contacts
WHERE
	phones [ 2 ] = '(408)-589-58423';

array의 원소를 update할 수 있다.

UPDATE contacts
SET phones [2] = '(408)-589-5843'
WHERE ID = 3;
SELECT
	id,
	name,
	phones [ 2 ]
FROM
	contacts
WHERE
	id = 3;

array 전체를 update 할 수 있다.

UPDATE contacts
SET phones = '{"(408)-589-5843"}'
WHERE id = 3;
SELECT
	name,
	phones
FROM
	contacts
WHERE
	id = 3;

 

where절을 이용해 array를 탐색할 수 있다.

SELECT
	name,
	phones
FROM
	contacts
WHERE
	'(408)-589-5555' = ANY (phones);

 

array를 원소별로 나눠서 행단위로 나타낼 수 있다.

SELECT
	name,
	unnest(phones)
FROM
	contacts;

반응형

댓글

💲 추천 글