정의와 특성

정의

여러 개의 데이터 값을 하나의 속성에 저장할 수 있도록 하는 것은 관계형 데이터베이스의 확장 기능이다. 컬렉션의 각 원소는 서로 다른 데이터 타입이 될 수도 있고, 심지어 서로 다른 클래스(단, 가상 클래스 제외) 도메인으로 가질 수도 있다. 예를 들어, SET (INTEGER, tbl_1)은 정수, 또는 사용자가 정의한 클래스 tbl_1의 행 값의 집합을 도메인으로 지정할 수 있다. 또한, SET ( )과 같이 도메인 리스트를 지정하지 않으면 사용자 정의 클래스를 포함한 모든 데이터 타입을 원소로 허용한다는 의미이다.

도메인 리스트가 두 개 이상인 컬렉션 타입 컬럼의 데이터를 조회할 수 있는 환경은 csql 유틸리티와 CCI API이며, CUBRID 매니저 및 그 밖의 CUBRID API(JDBC, ODBC, OLEDB, PHP)에서는 조회할 수 없음을 유의한다.

CUBRID가 지원하는 집합형 데이터 타입

타입

설명

타입 정의

입력 데이터

저장 데이터

SET

중복을 허용하지 않는 합집합

col_name SET VARCHAR(20
col_name SET (int, VARCHAR(20))

{'c','c','c','b','b', 'a'}
{3,3,3,2,2,1,0,'c','c','c','b','b', 'a'}

{'a','b','c'}
{0,1,2,3,'a','b','c'}

MULTISET

중복을 허용하는 합집합

col_name MULTISET VARCHAR(20)
col_name MULTISET (int, VARCHAR(20))

{'c','c','c','b','b', 'a'}
{3,3,3,2,2,1,0,'c','c','c','b','b', 'a'}

{'a','b','b','c','c','c'}
{0,1,2,2,3,3,3,'a','b','b', 'c','c','c'}

LIST
SEQUENCE

중복을 허용하고, 데이터 입력 순서대로 저장하는 합집합

col_name LIST VARCHAR(20)
col_name LIST (int, VARCHAR(20))

{'c','c','c','b','b', 'a'}
{3,3,3,2,2,1,0,'c','c','c','b','b', 'a'}

{'c','c','c','b','b','a'}
{3,3,3,2,2,1,0,'c','c','c','b','b','a'}

위의 표에 나타난 바와 같이, 컬렉션 타입으로 지정되는 값은 중괄호('{', '}') 안에 각 값들을 쉼표(,)로 구분하여 나열할 수 있다.

특성

변환(Coercions)

컬렉션 타입은 지정된 도메인이 같다면 CAST 연산자를 이용하여 명시적으로 타입 변환이 가능하다. 아래 표는 명시적 변환이 가능한 컬렉션 타입에 관한 것이다.

명시적 변환이 가능한 컬렉션 타입

 

TO

FROM

 

SET

MULTISET

LIST

SET

-

O

O

MULTISET

O

-

X

LIST

O

O

-