> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tibero-manuals/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tibero-manuals/7.2.6.manuals/tibero-sql-reference-guide/sql-elements/undefined.md).

# 데이터 타입

Tibero에서는 SQL 표준에 기반한 여러 가지 데이터 타입을 제공합니다. 다음은 Tibero에서 제공하는 데이터 타입입니다.

<table><thead><tr><th width="174">구분</th><th>데이터 타입</th></tr></thead><tbody><tr><td>문자형</td><td>CHAR, VARCHAR, VARCHAR2, NCHAR, NVARCHAR, NVARCHAR2, RAW, LONG, LONG RAW</td></tr><tr><td>숫자형</td><td>NUMBER, INTEGER, FLOAT, BINARY_FLOAT, BINARY_DOUBLE</td></tr><tr><td>날짜형</td><td>DATE, TIME, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE</td></tr><tr><td>간격형</td><td>INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND</td></tr><tr><td>대용량 객체형</td><td>CLOB, BLOB, XMLTYPE, JSON</td></tr><tr><td>내재형</td><td>ROWID</td></tr><tr><td>사용자 정의형</td><td>배열, 네스티드 테이블</td></tr></tbody></table>

### 문자형

문자형은 문자열을 표현하는 데이터 타입입니다. 문자형에는 CHAR, VARCHAR, VARCHAR2, NCHAR, NVARCHAR, NVARCHAR2, RAW, LONG, LONG RAW 타입 등이 있습니다.

#### **CHAR**

CHAR 타입은 문자열을 저장하는 데이터 타입입니다. 항상 고정된 문자열 길이를 갖습니다.

```
CHAR(size[BYTE|CHAR])
```

CHAR 타입은 다음과 같은 특징이 있습니다.

* 문자열은 최대 2,000 byte나 2,000자까지 선언할 수 있습니다. 변환된 문자열의 길이가 2,000 byte나 2,000자를 넘으면 에러가 발생합니다.\
  Tibero에서는 CHAR 타입으로 정의한 컬럼에 입력된 문자열을 데이터베이스의 문자 집합에 맞게 변환하여 저장합니다. 이때 변환된 문자열은 2,000 byte나 2,000자를 초과해서는 안 됩니다.
* 문자열의 길이는 byte와 문자를 기준으로 지정할 수 있습니다. CHAR(10 BYTE), CHAR(10 CHAR)의 형태로 선언합니다. 뒷부분에 아무런 옵션도 지정하지 않고 CHAR(10)의 형태로 선언하면, byte로 문자열의 길이가 지정됩니다. 각각 BYTE로 선언할 경우엔 2,000 byte까지 저장할 수 있고, CHAR로 선언할 경우엔 2,000자까지 저장할 수 있습니다.\
  따라서 CHAR로 문자열의 길이를 선언할 때 실제 컬럼의 길이는 데이터베이스가 사용하는 문자 집합에 따라 좌우됩니다. 즉, 한 문자가 몇 byte로 표현되는지에 따라 그 길이가 달라집니다.
* SQL 문장에서 CHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용합니다.
* 문자열의 길이가 0인 값은 NULL로 인식됩니다.<br>

다음은 CHAR 타입을 설명하는 예입니다.

```
PRODUCT_NAME CHAR(10)
```

위 예제에서 보듯이 PRODUCT\_NAME 컬럼은 항상 10 byte의 문자열 길이를 갖습니다. 예를 들어 **'Tibero'** 문자열이 입력되었다면, 네 개의 공백 문자가 채워져서 **'Tibero '** 문자열이 저장됩니다. 이처럼 선언된 길이보다 짧은 문자열이 입력되면 남은 부분은 공백 문자(space)로 채워집니다.

#### **VARCHAR**

VARCHAR 타입도 CHAR 타입과 마찬가지로 문자열을 저장하는 데이터 타입입니다.

단, CHAR 타입과 다른 점은 문자열 길이가 일정하지 않은 가변 길이를 갖는다는 것입니다.

```
VARCHAR(size[BYTE|CHAR])
```

VARCHAR 타입은 다음과 같은 특징이 있습니다.

* 문자열은 최대 65,532 byte나 65,532자까지 선언할 수 있습니다. 변환된 문자열의 길이가 65,532 byte나 65,532자를 넘으면 에러가 발생합니다. Tibero에서는 VARCHAR 타입으로 정의한 컬럼에 입력된 문자열을 데이터베이스의 문자 집합에 맞게 변환하여 저장합니다. 이때 변환된 문자열은 65,532 byte를 초과해서는 안 됩니다.
* 문자열의 길이는 byte와 문자를 기준으로 지정할 수 있습니다. VARCHAR(10 BYTE), VARCHAR(10 CHAR)의 형태로 선언합니다. 뒷부분에 아무런 옵션도 지정하지 않고 VARCHAR(10)의 형태로 선언하면 byte로 문자열의 길이가 지정됩니다.\
  각각 BYTE로 선언할 경우에는 65,532 byte까지 저장할 수 있고, CHAR로 선언할 경우에는 65,532자까지 저장할 수 있습니다. 따라서 CHAR로 문자열의 길이를 선언할 때 실제 컬럼의 길이는 데이터베이스가 사용하는 문자 집합에 따라 좌우됩니다. 즉, 한 문자가 몇 byte로 표현되는지에 따라 그 길이가 달라집니다.
* SQL 문장에서 VARCHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용합니다.
* 문자열의 길이가 0인 값은 NULL로 인식됩니다.<br>

다음은 VARCHAR 타입을 설명하는 예입니다.

```
EMP_NAME VARCHAR(10)
```

위 예제에서 보듯이 EMP\_NAME 컬럼은 10 byte의 문자열 길이를 갖습니다. 예를 들어 **'Peter'** 문자열이 입력되었다면 **'Peter'** 문자열이 저장됩니다. 다시 말해 EMP\_NAME 컬럼의 문자열 길이는 10 byte로 선언되었지만 실제로 저장된 문자열 길이는 5 byte입니다. 이처럼 VARCHAR 타입은 선언된 문자열 길이의 범위 내에서 입력된 문자열 길이와 동일한 길이를 갖습니다.

#### **VARCHAR2**

VARCHAR2 타입은 VARCHAR 타입과 완전히 동일합니다.

#### **NCHAR**

NCHAR 타입은 유니코드 문자열을 저장하기 위한 타입입니다. 항상 고정된 문자열 길이를 갖습니다.

```
NCHAR(size)
```

NCHAR 타입은 다음과 같은 특징이 있습니다.

* 기본적으로 CHAR 타입과 유사하지만, 문자열의 길이는 문자 기준입니다. 데이터베이스에 저장되는 타입의 길이는 다국어 문자 집합에 따라 달라집니다. 예를 들어 UTF8인 경우에는 size의 최대 4배, UTF16인 경우에는 size의 최대 2배가 됩니다.
* NCHAR 타입 문자열의 최대 길이는 2,000자입니다.
* SQL 문장에서 NCHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용합니다.
* 문자열의 길이가 0인 값은 NULL로 인식됩니다.

#### **NVARCHAR**

NVARCHAR 타입은 NCHAR과 마찬가지로 유니코드 문자열을 저장하기 위한 타입입니다. 단, NCHAR 타입과 다르게 문자열 길이가 일정하지 않은 가변 길이를 갖습니다.

```
NVARCHAR(size)
```

NVARCHAR 타입은 다음과 같은 특징이 있습니다.

* 기본적으로 VARCHAR 타입과 유사하지만, 문자열의 길이는 문자 기준입니다. 데이터베이스에 저장되는 타입의 길이는 다국어 문자 집합에 따라 달라집니다. 예를 들어 UTF8인 경우에는 size의 최대 4배, UTF16인 경우에는 size의 최대 2배가 됩니다.
* NVARCHAR 타입의 문자열의 최대 길이는 32,766자입니다. 단, 65,532 byte를 초과할 수 없습니다.
* SQL 문장에서 NVARCHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용합니다.
* 문자열의 길이가 0인 값은 NULL로 인식됩니다.

#### **NVARCHAR2**

NVARCHAR2 타입은 NVARCHAR 타입과 완전히 동일합니다.

#### **RAW**

RAW 타입은 임의의 바이너리 데이터를 저장하는 데이터 타입입니다. 이때 바이너리 데이터는 선언된 최대 길이 내에서 임의의 길이를 갖습니다.

RAW 타입이 CHAR, VARCHAR 타입과 다른 점은 데이터 중간에 NULL 문자('\0')가 올 수 있다는 것입니다. CHAR, VARCHAR 타입은 그렇지 않습니다. 따라서 RAW 타입은 NULL 문자로 데이터의 끝을 나타낼 수 없으므로 항상 길이 정보를 함께 저장합니다.

```
RAW(size)
```

RAW 타입은 다음과 같은 특징이 있습니다.

* 최대 2,000 byte까지 선언할 수 있습니다.
* 선언된 길이 내에서 가변 길이를 갖습니다.
* 데이터 중간에 NULL 문자('\0')가 올 수 있습니다.
* 입출력을 수행할 때 RAW 타입의 데이터는 16진수로 표현됩니다. 예를 들면 4 byte의 데이터는 16진수로 '012345AB'로 표현되며 필요한 경우 맨 앞이 0으로 시작되어야 합니다.

#### **LONG**

LONG 타입은 VARCHAR 타입을 확장한 데이터 타입입니다. VARCHAR 타입과 마찬가지로 문자열이 저장됩니다.

```
LONG
```

LONG 타입은 다음과 같은 특징이 있습니다.

* 최대 2GB까지 선언할 수 있습니다.
* 테이블 내의 한 컬럼에만 선언할 수 있습니다.
* LONG 타입의 컬럼에 대해서는 인덱스를 생성할 수 없습니다.
* LONG 타입의 컬럼을 포함한 로우(Row)가 디스크에 저장될 때에는 다른 컬럼의 값과 함께 동일한 디스크 블록에 저장되며, 길이에 따라 여러 디스크 블록에 걸쳐 저장될 수 있습니다.
* LONG 타입의 데이터에 접근할 때는 항상 순차적으로만 접근할 수 있으며, 임의의 위치에 대해 연산은 할 수 없습니다.

#### **LONG RAW**

LONG RAW 타입은 RAW 타입을 확장한 데이터 타입입니다. RAW 타입과 마찬가지로 바이너리 데이터가 저장됩니다.

```
LONG RAW
```

LONG RAW 타입은 다음과 같은 특징이 있습니다.

* 최대 2GB까지 선언할 수 있습니다.
* 테이블 내의 한 컬럼에만 선언할 수 있습니다.
* LONG RAW 타입의 컬럼에 대해서는 인덱스를 생성할 수 없습니다.
* LONG RAW 타입의 컬럼을 포함한 로우가 디스크에 저장될 때에는 다른 컬럼의 값과 함께 동일한 디스크 블록에 저장되며, 길이에 따라 여러 디스크 블록에 걸쳐 저장될 수 있습니다.
* LONG RAW 타입의 데이터에 접근할 때는 항상 순차적으로만 접근할 수 있으며, 임의의 위치에 대해 연산은 할 수 없습니다.

### 숫자형

숫자형은 정수나 실수의 숫자를 저장하는 데이터 타입입니다. 숫자형에는 NUMBER 타입, INTEGER 타입, FLOAT 타입, BINARY\_FLOAT 타입, BINARY\_DOUBLE 타입이 있습니다.

Tibero에서는 ANSI에서 제정한 SQL 표준의 숫자 타입의 선언을 지원합니다. 즉, INTEGER 타입 또는 FLOAT 타입으로 컬럼을 선언하더라도 내부적으로 적절한 정밀도와 스케일을 설정하여 NUMBER 타입으로 변환해줍니다.

{% hint style="info" %}
**참고**

본 안내서에서는 INTEGER 타입, FLOAT 타입에 대한 내용은 별도로 기술하지 않습니다.
{% endhint %}

#### **NUMBER**

NUMBER 타입은 정수 또는 실수를 저장하는 데이터 타입입니다.

NUMBER 타입이 표현할 수 있는 수의 범위는 음양으로 절댓값이 1.0×10⁻¹³⁰보다 크거나 같고, 1.0×10¹²⁶보다 작은 38자리의 수를 표현할 수 있으며 0과 ±무한대를 포함합니다.

NUMBER 타입은 선언할 때 다음과 같이 자릿수를 의미하는 정밀도와 스케일을 함께 정의할 수 있습니다.

```
NUMBER[(precision[,scale])]
```

<table><thead><tr><th width="135">구분</th><th>설명</th></tr></thead><tbody><tr><td>precision</td><td><p>정밀도는 유효 숫자의 최대 자릿수</p><ul><li>가장 왼쪽의 0이 아닌 숫자부터 가장 오른쪽의 신뢰할 수 있는 숫자까지의 자릿수 의미</li><li>정밀도를 초과하는 자릿수의 데이터는 저장할 수 없음</li><li>정밀도는 <strong>1 ~ 38</strong>까지 정의 가능</li><li>정밀도는 애스터리스크(<code>*</code>)로도 선언 가능</li><li>정밀도를 <strong>38</strong>로 선언한 것을 의미하며, 이 경우 스케일 값을 함께 선언</li></ul></td></tr><tr><td>scale</td><td><p>스케일은 소수점 아래 가장 오른쪽 유효 숫자까지의 자릿수</p><ul><li>스케일은 생략할 수 있으며, <strong>0으로 선언한 것과 동일</strong>. 이 경우 정수를 표현</li><li>마이너스 스케일은 <strong>소수점 위 자릿수</strong> 의미</li><li>스케일을 초과하는 데이터는 반올림 수행</li><li>스케일은 <strong>-125 ~ 130</strong>까지 정의 가능</li></ul></td></tr></tbody></table>

정밀도와 스케일을 생략하여 선언한 경우 표현 가능한 최대 범위와 최대 정밀도 내에서 임의의 자릿수를 갖는 모든 데이터 값을 지원합니다. 최대 정밀도 38을 초과하는 데이터는 반올림을 수행합니다.

다음은 입력된 데이터가 NUMBER 타입의 정밀도와 스케일에 정의된 값에 따라 실제 데이터베이스에 어떤 형태로 저장되는지를 보여줍니다.

<table><thead><tr><th width="160"></th><th width="177"></th><th></th></tr></thead><tbody><tr><td>12,345.678</td><td>NUMBER</td><td>12,345.678</td></tr><tr><td>12,345.678</td><td>NUMBER(*,3)</td><td>12,345.678</td></tr><tr><td>12,345.678</td><td>NUMBER(8,3)</td><td>12,345.678</td></tr><tr><td>12,345.678</td><td>NUMBER(8,2)</td><td>12,345.68</td></tr><tr><td>12,345.678</td><td>NUMBER(8)</td><td>12,346</td></tr><tr><td>12,345.678</td><td>NUMBER(8,-2)</td><td>12,300</td></tr><tr><td>12,345.678</td><td>NUMBER(3)</td><td>입력된 데이터의 자릿수가 정밀도를 초과했으므로 저장할 수 없음</td></tr></tbody></table>

#### **BINARY\_FLOAT 타입**

BINARY\_FLOAT 타입은 실수나 정수를 표현하고, 32비트로 저장하는 단일 정밀도 데이터 타입입니다.

BINARY\_FLOAT 타입은 음양으로 절댓값이 1.17549E-38보다 크거나 같고, 3.40282E+38보다 작은 수를 표현할 수 있습니다.

BINARY\_FLOAT 타입은 다음과 같은 특징이 있습니다.

* 특별값인 INF, -INF, NaN(Not A Number)을 지원합니다.
* 사칙연산을 모두 지원합니다.
* 비교 연산자를 지원합니다. 단, NaN은 다른 모든 값보다 가장 큰 값으로 취급하고, 서로 다른 NaN과 NaN은 같습니다.
* 각종 변환 함수 및 수학 함수를 지원합니다.

#### **BINARY\_DOUBLE 타입**

BINARY\_DOUBLE 타입은 실수나 정수를 표현하고, 64비트로 저장하는 2배 정밀도 데이터 타입입니다.

BINARY\_DOUBLE 타입은 음양으로 절댓값이 2.22507485850720E-308보다 크거나 같고, 1.79769313486231E+308보다 작은 수를 표현할 수 있습니다.

BINARY\_DOUBLE 타입은 다음과 같은 특징이 있습니다.

* 특별값인 INF, -INF, NaN(Not A Number)을 지원합니다.
* 사칙연산을 모두 지원합니다.
* 비교 연산자를 지원합니다. 단, NaN은 다른 모든 값보다 가장 큰 값으로 취급하고, 서로 다른 NaN과 NaN은 같습니다.
* 각종 변환 함수 및 수학 함수를 지원합니다.

#### **숫자형 타입의 우선순위**

Tibero에서는 서로 다른 숫자형 타입을 사용하는 연산에서 각 연산자를 어떤 데이터 타입으로 변환할지를 우선순위에 따라 결정합니다. 세 타입 중에서는 BINARY\_DOUBLE이 가장 높은 우선순위를 가지고, 다음으로 BINARY\_FLOAT, 마지막으로 NUMBER 순입니다.

* 연산자 중 하나라도 BINARY\_DOUBLE일 경우엔 모든 연산자를 BINARY\_DOUBLE로 변환합니다.
* 연산자 중 BINARY\_DOUBLE이 없고 하나라도 BINARY\_FLOAT일 경우에는 모든 연산자를 BINARY\_FLOAT로 변환합니다.
* BINARY\_FLOAT이나 BINARY\_DOUBLE이 없는 경우엔 모든 연산자를 NUMBER로 변환합니다.

다른 데이터 타입과의 관계에서는 날짜나 간격형 타입보다는 낮은 우선순위를 가지고, 나머지 모든 타입보다는 높은 우선순위를 가집니다.

### 날짜형

날짜형은 시간이나 날짜를 저장하는 데이터 타입입니다. 날짜형에는 DATE 타입, TIME 타입, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE 타입이 있습니다.

#### **DATE**

DATE 타입은 특정 날짜와 초 단위까지의 시간을 표현하는 데이터 타입입니다.

```
DATE
```

DATE 타입은 다음과 같은 특징이 있습니다.

* 연도, 월, 일, 시, 분, 초를 표현할 수 있습니다.
* 연도는 BC 9,999 \~ AD 9,999까지 표현할 수 있습니다.
* 시간은 24시간 단위로 표현됩니다.

#### **TIME**

TIME 타입은 초 단위 소수점 9자리까지의 특정 시간을 표현하는 데이터 타입입니다.

```
TIME [(fractional_seconds_precision)]
```

<table><thead><tr><th width="278">항목</th><th>설명</th></tr></thead><tbody><tr><td>fractional_seconds_precision</td><td><ul><li>초 단위의 소수점 자릿수</li><li>0~9 사이의 값을 사용할 수 있음 (기본값: 6)</li></ul></td></tr></tbody></table>

TIME 타입은 다음과 같은 특징이 있습니다.

* 시, 분, 초, 10⁻⁹초를 표현할 수 있습니다.
* 시간은 24시간 단위로 표현됩니다.

#### **TIMESTAMP**

TIMESTAMP 타입은 날짜와 초 단위 소수점 9자리까지의 시간을 모두 표현하는 데이터 타입입니다.

```
TIMESTAMP [(fractional_seconds_precision)]
```

<table><thead><tr><th width="284">항목</th><th>설명</th></tr></thead><tbody><tr><td>fractional_seconds_precision</td><td><ul><li>초 단위의 소수점 자릿수를 말함</li><li>0~9 사이의 값을 사용할 수 있음 (기본값: 6)</li></ul></td></tr></tbody></table>

TIMESTAMP 타입은 다음과 같은 특징이 있습니다.

* 연도, 월, 일, 시, 분, 초, 10⁻⁹초를 표현할 수 있습니다.
* 연도는 BC 9,999 \~ AD 9,999까지 표현 가능합니다.
* 시간은 24시간 단위로 표현됩니다.

#### **TIMESTAMP WITH TIME ZONE**

TIMESTAMP WITH TIME ZONE 타입은 TIMESTAMP 타입을 확장하여 시간대까지 표현하는 데이터 타입입니다.

```
TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE
```

<table><thead><tr><th width="281">항목</th><th>설명</th></tr></thead><tbody><tr><td>fractional_seconds_precision</td><td><ul><li>초 단위의 소수점 자릿수를 말함</li><li>0~9 사이의 값을 사용할 수 있음 (기본값: 6)</li></ul></td></tr></tbody></table>

TIMESTAMP WITH TIME ZONE 타입은 다음과 같은 특징이 있습니다.

* 연도, 월, 일, 시, 분, 초, 10⁻⁹초 등은 TIMESTAMP 타입과 동일한 특징을 가집니다.
* 각 시간 요소를 UTC(Coordinated Universal Time) 시간으로 정규화해서 저장합니다.
* 지역 이름이나 오프셋으로 표현된 시간대를 포함하여 저장합니다. 여기서 오프셋은 현재 지역의 시간과 UTC 시간과의 차이를 말합니다.

#### **TIMESTAMP WITH LOCAL TIME ZONE**

TIMESTAMP WITH LOCAL TIME ZONE 타입은 특정 세션의 시간대에 따라 다르게 시간 정보를 표현하는 데이터 타입입니다.

```
TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE
```

<table><thead><tr><th width="279">항목</th><th>설명</th></tr></thead><tbody><tr><td>fractional_seconds_precision</td><td>초 단위의 소수점 자릿수. 0~9 사이의 값을 사용할 수 있음 (기본값: 6)</td></tr></tbody></table>

TIMESTAMP WITH LOCAL TIME ZONE 타입은 다음과 같은 특징이 있습니다.

* 연도, 월, 일, 시, 분, 초, 10⁻⁹초 등은 TIMESTAMP 타입과 동일한 특징을 가집니다.
* 각 시간 요소를 UTC(Coordinated Universal Time) 시간으로 정규화해서 저장합니다.
* TIMESTAMP WITH TIME ZONE 타입과 달리 지역 이름이나 오프셋은 저장하지 않고, 조회할 때 세션의 시간대로 자동 변환되어 반환됩니다.

#### **AT TIME ZONE 절을 사용한 시간대 변환**

AT TIME ZONE 절을 사용하여 날짜형 데이터 타입의 시간대를 변환할 수 있습니다.

AT TIME ZONE 절을 사용하는 경우 해당 절과 함께 다음 중 하나를 설정할 수 있습니다.

* 문법

<figure><img src="/files/oOUNpjRtTfi9yfJWnS9e" alt=""><figcaption></figcaption></figure>

* 구성 요소

<table><thead><tr><th width="196">구성 요소</th><th>설명</th></tr></thead><tbody><tr><td>datetime_value_expr</td><td><ul><li>datetime_value_expr에는 날짜형 데이터 타입 컬럼 혹은 날짜형 데이터 타입의 표현식이 올 수 있음</li><li>현재 TIMESTAMP 혹은 TIMESTAMP WITH TIME ZONE 날짜형 데이터 타입만 허용됨</li></ul></td></tr><tr><td>DBTIMEZONE</td><td>Tibero에 설정된 데이터베이스 시간대를 사용</td></tr><tr><td>SESSIONTIMEZONE</td><td>현재 세션의 시간대를 사용</td></tr><tr><td>time_zone_name</td><td>명시한 표준 시간대를 사용</td></tr><tr><td>expr</td><td>표현식이 유효한 시간대 형식의 문자열인 경우 해당 시간대를 사용</td></tr></tbody></table>

* 예제

다음은 AT TIME ZONE 절에 `time_zone_name`을 명시하여 시간대를 변환하는 예입니다.

```
SELECT TO_TIMESTAMP('20190908', 'YYYYMMDD') AT TIME ZONE 'UTC' AS TS_UTC
FROM DUAL;

TS_UTC
----------------------------------------
2019/09/07 15:00:00.000000 UTC
```

### **간격형**

간격형은 시간이나 날짜 사이의 간격을 저장하는 데이터 타입으로, INTERVAL YEAR TO MONTH 타입, INTERVAL DAY TO SECOND 타입이 있습니다.

#### **INTERVAL YEAR TO MONTH**

INTERVAL YEAR TO MONTH 타입은 연도와 월을 이용하여 시간 간격을 표현하는 데이터 타입입니다.

```
INTERVAL YEAR [(year_precision)] TO MONTH
```

<table><thead><tr><th width="205">항목</th><th>설명</th></tr></thead><tbody><tr><td>year_precision</td><td>연도 단위의 자릿수 (기본값: 2)</td></tr></tbody></table>

#### **INTERVAL DAY TO SECOND**

INTERVAL DAY TO SECOND 타입은 일, 시, 분, 초를 이용하여 시간 간격을 표현하는 데이터 타입입니다.

```
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]
```

<table><thead><tr><th width="266">항목</th><th>설명</th></tr></thead><tbody><tr><td>day_precision</td><td>일 단위의 자릿수 (기본값: 2)</td></tr><tr><td>fractional_seconds_precision</td><td><p>초 단위의 소수점 자릿수</p><p>0~9 사이의 값을 사용할 수 있음 (기본값: 6)</p></td></tr></tbody></table>

### **대용량 객체형**

대용량 객체형은 대용량의 객체를 저장하기 위해 Tibero에서 제공하는 가장 큰 데이터 타입으로, CLOB 타입과 BLOB 타입, XMLTYPE, JSON 타입이 있습니다.

#### **CLOB**

CLOB 타입은 LONG 타입을 확장한 데이터 타입입니다.

CLOB 타입은 다음과 같은 특징이 있습니다.

* 데이터를 8KB 블록에서 32TB까지 저장할 수 있습니다.
* 테이블 내에서 하나 이상의 컬럼에 선언할 수 있습니다.
* 데이터에 접근할 때 LONG 타입과 달리 임의의 위치에서 접근할 수 있습니다.
* CLOB 타입의 컬럼 값은 같은 테이블의 다른 타입으로 선언된 컬럼 값과 동일한 디스크 블록에 저장되지 않습니다. 디스크 블록 내의 로우는 별도의 디스크 블록에 저장된 CLOB 타입의 포인터만 저장하고 있습니다.

#### **BLOB**

BLOB 타입은 LONG RAW 타입을 확장한 데이터 타입이며, 특징은 CLOB 타입과 유사합니다.

BLOB 타입은 다음과 같은 특징이 있습니다.

* 데이터를 8KB 블록에서 32TB까지 저장할 수 있습니다.
* 테이블 내에서 하나 이상의 컬럼에 선언할 수 있습니다.
* 데이터에 접근할 때 LONG RAW 타입과 달리 임의의 위치에서 접근할 수 있습니다.
* BLOB 타입의 컬럼 값은 같은 테이블의 다른 타입으로 선언된 컬럼 값과 동일한 디스크 블록에 저장되지 않습니다. 디스크 블록 내의 로우는 별도의 디스크 블록에 저장된 BLOB 타입의 포인터만 저장하고 있습니다.

#### **XMLTYPE**

XML(Extensible Markup Language)은 구조화되거나 그렇지 않은 모든 데이터를 표현하기 위해 W3C(World Wide Web Consortium)에 의해 표준으로 제정된 형식입니다.

Tibero에서는 이 XML 데이터를 저장하기 위해 XMLTYPE 타입을 제공하며, 내부적으로 CLOB 형식으로 저장됩니다.

XMLTYPE 타입은 다음과 같은 특징이 있습니다.

* 데이터를 CLOB의 최대 크기까지 저장할 수 있습니다.
* 테이블 내에서 하나 이상의 컬럼에 선언할 수 있습니다.
* XML 데이터에 대한 접근, 추출, 질의를 수행할 때 사용합니다.

#### **JSON**

JSON(JavaScript Object Notation)은 KEY/VALUE 쌍으로 이루어진 데이터 객체를 전달하기 위해 사용하는 개방형 표준 포맷입니다.

Tibero에서는 이 JSON 데이터를 저장 및 처리하기 위해 JSON 타입을 제공하며, 내부적으로 BLOB 형식으로 저장됩니다.

JSON 타입은 다음과 같은 특징이 있습니다.

* 데이터를 BLOB의 최대 크기까지 저장할 수 있습니다.
* 테이블 내에서 하나 이상의 컬럼에 선언할 수 있습니다.
* JSON 데이터에 대한 접근, 추출, 질의를 수행할 때 사용합니다.

### **내재형**

내재형은 사용자가 명시적으로 선언하지 않아도 Tibero가 삽입되는 로우마다 자동으로 부여하는 데이터 타입입니다.

#### **ROWID**

ROWID는 데이터베이스의 각 로우를 식별하기 위해 Tibero가 각 로우마다 자동으로 부여하는 내재형 데이터 타입으로, 로우가 저장된 물리적인 위치를 포함하고 있습니다.

{% hint style="info" %}
ROWID에 대한 자세한 내용은 “[의사 컬럼](/tibero-manuals/7.2.6.manuals/tibero-sql-reference-guide/sql-elements/undefined-4.md)”을 참고합니다.
{% endhint %}

### **사용자 정의형**

사용자 정의형은 사용자가 정의하여 사용하는 컬렉션 형태의 타입입니다. tbPSM에서 사용할 수 있으며, Tibero 서버에 저장됩니다.

{% hint style="info" %}
사용자 정의형의 자세한 내용은 "Tibero tbPSM 안내서"를 참고합니다.
{% endhint %}

#### **배열**

배열은 최대 배열 길이를 가지는 동일한 타입을 구성 요소로 갖는 컬렉션 형태의 사용자 정의 타입입니다.

#### **네스티드 테이블**

네스티드 테이블(Nested Table)은 최대 배열 길이가 없는 동일한 타입을 구성 요소로 갖는 컬렉션 형태의 사용자 정의 타입입니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.tibero.com/tibero-manuals/7.2.6.manuals/tibero-sql-reference-guide/sql-elements/undefined.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
