본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

52강 SQL 초석 다지기 : PostgreSQL Array

by DoitSQL 2022. 12. 27.
728x90

PostgreSQL 강의, PostgreSQL 강좌, SQL 무료강의, SQL 무료강좌, SQL 기초강의 , SQL 기초강좌

52강 SQL 초석 다지기 : PostgreSQL Array  

SQL 초석 다지기 52강 시작합니다.

본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/

이번 시간에는

 PostgreSQL Array Data Type

에 대해서 알아보는 시간입니다.

 

요약: 이번 강의에서는 PostgreSQL 배열을 사용하는 방법과 배열 조작을 위한 몇 가지 편리한 기능을 소개합니다.


Introduction to PostgreSQL Array   

배열은 PostgreSQL에서 중요한 역할을 한다. 예를 들어, 정수는 정수 배열 유형, 문자는 문자 배열 유형 등이 있다. 자신의 데이터 유형을 정의하는 경우 PostgreSQL은 백그라운드에서 해당 배열 유형을 생성합니다.

PostgreSQL을 사용하면 기본 제공 유형, 사용자 정의 유형 또는 열거형 유형을 포함한 모든 유효한 데이터 유형의 배열이 되도록 열을 정의할 수 있습니다.

다음 CREATE TABLE 문은 phones 열이 텍스트 배열로 정의된 contacts 테이블을 만듭니다.

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

 

phones 컬럼은 연락처가 가질 수 있는 다양한 전화 번호를 보유하는 1차원 배열이다.

 

Insert PostgreSQL array values   

다음 문은 연락처 테이블에 새 연락처를 삽입합니다.

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"}'); 

 

위의 문은 두 개의 행을 연락처 테이블에 삽입합니다. 중괄호를 사용할 때는 작은따옴표 '를 사용하여 배열을 묶고 큰따옴표 "를 사용하여 텍스트 배열 항목을 묶습니다.

 

Query array data   

SELECT 문을 사용하여 다음과 같이 배열 데이터를 쿼리할 수 있습니다.

SELECT
     name,
     phones
FROM
     contacts; 

대괄호 [] 안에 있는 첨자를 사용하여 배열 요소에 액세스합니다. 기본적으로 PostgreSQL은 배열 요소에 대해 단일 기반 번호 매기기를 사용합니다. 이것은 첫 번째 배열 요소가 숫자 1로 시작한다는 것을 의미합니다. 대화 상대의 이름과 첫 번째 전화 번호를 알고자 하는 경우 다음 쿼리를 사용합니다.

SELECT
     name,
     phones [ 1 ]
FROM
     contacts; 

 

WHERE 절의 배열 요소를 행 필터링 조건으로 사용할 수 있습니다. 예를 들어, 두 번째 전화 번호로 전화 번호(408)-589-58423을 가진 사람을 확인하려면 다음과 같은 쿼리를 사용합니다.

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

 

Modifying PostgreSQL array   

PostgreSQL을 사용하면 배열의 각 요소 또는 전체 배열을 업데이트할 수 있습니다. 다음 문장은 윌리엄 게이트의 두 번째 전화번호를 업데이트합니다.

UPDATE contacts
     SET phones [2] = '(408)-589-5843'
WHERE ID = 3;  

 

다시 한 번 확인해 봅시다.

SELECT
     id,
     name,
     phones [ 2 ]
FROM
     contacts
WHERE
     id = 3;  

다음 명령문은 배열을 전체적으로 업데이트합니다.

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

 

다음 문장을 사용하여 업데이트를 확인합니다.

SELECT
     name,
     phones
FROM
     contacts
WHERE
     id = 3;   

 

Search in PostgreSQL Array   

전화 배열에서 전화 번호의 위치에 관계없이 전화 번호(408)-589-5555를 가진 사람을 알고 싶다고 가정하면, 다음과 같이 ANY() 함수를 사용합니다.

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

 

Expand Arrays   

PostgreSQL은 배열을 행 목록으로 확장하는 unnest() 함수를 제공합니다. 

예를 들어, 다음 쿼리는 전화기 배열의 모든 전화 번호를 확장합니다.

SELECT
    name,
    unnest(phones)
FROM
    contacts;  


이번 시간에는 PostgreSQL 배열 데이터 유형을 사용하는 방법과 가장 중요한 배열 연산자 및 함수를 소개했습니다.

 

수고하셨습니다.


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글