이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

비 원자 값

관계형 모델의 신조 중 하나는 속성이 있다는 것입니다. 관계는 원자입니다.Postgres이 제한이 없습니다. 속성 자체가 포함 할 수 있습니다 쿼리 언어에서 액세스 할 수있는 하위 값. 을 위한 예를 들어,베이스 젠 토토 인 속성을 만들 수 있습니다. 유형.

젠 토토

Postgres속성을 허용합니다 인스턴스는 고정 길이 또는 가변 길이로 정의됩니다 다차원 젠 토토. 기본 유형 또는 사용자 정의의 젠 토토 유형을 만들 수 있습니다. 그들의 사용을 설명하기 위해 먼저 우리는 a를 만듭니다 기본 유형의 젠 토토이있는 클래스.

테이블 생성 sal_emp (
    이름 텍스트,
    pay_by_quarter int4 [],
    일정 텍스트 [] []
);

위의 쿼리는 a로 sal_emp라는 클래스를 생성합니다.텍스트String (이름), 1 차원 젠 토토int4(pay_by_quarter) 직원의 급여는 분기별로, 2 차원을 나타냅니다 젠 토토텍스트(일정) 직원의 주간 일정. 이제 우리는 몇 가지를합니다삽입s; 젠 토토에 추가 할 때 우리는 버팀대 내의 값을 둘러싸고 쉼표로 분리하십시오. 만약에 알잖아C, 이것은 구문과 다릅니다 구조 초기화.

sal_emp에 삽입하십시오
    값 ( 'Bill',
    '10000, 10000, 10000, 10000',
    ' "meeting", "lunch", ');

sal_emp에 삽입하십시오
    값 ( '캐롤',
    '20000, 25000, 25000, 25000',
    ' "talk", "consult",  "meeting"');
기본적으로Postgres용도 젠 토토에 대한 "일원 기반"번호 컨벤션, 즉 N 요소의 젠 토토은 젠 토토 [1]으로 시작하여 젠 토토 [n]으로 끝납니다. 이제 sal_emp에서 몇 가지 쿼리를 실행할 수 있습니다. 먼저, 우리는 방법을 보여줍니다 한 번에 젠 토토의 단일 요소에 액세스하십시오. 이 쿼리가 검색됩니다 2 분기에 급여가 바뀌는 직원의 이름 :
이름을 선택하십시오
    sal_emp에서
    여기서 sal_emp.pay_by_quarter [1] <
    sal_emp.pay_by_quarter [2];

+------+
| 이름 |
+------+
| 캐롤 |
+------+

이 쿼리는 모든 직원의 3 분기 급여를 검색합니다.

sal_emp에서 sal_emp.pay_by_quarter [3]를 선택하십시오.

+---------------+
| pay_by_quarter |
+---------------+
| 10000 |
+---------------+
| 25000 |
+--------------+

우리는 또한 젠 토토 또는 서브 어레이의 임의의 슬라이스에 액세스 할 수 있습니다. 이 쿼리는 Bill의 일정에 따라 첫 번째 항목을 검색합니다. 주 1 주일.

sal_emp.schedule을 선택하십시오 [1 : 2] [1 : 1]
    sal_emp에서
    여기서 sal_emp.name = 'Bill';

+-------------------+
| 일정 |
+-------------------+
|  "meeting",  "" |
+-------------------+