티스토리 뷰

database/db

[oracle] 2.데이터 타입(Data Type)

그루아트 2020. 3. 8. 21:40

1.문자형 타입

종류는 CHAR, VARCHAR2, NCHAR, NVARCHAR2, LONG


ex) id char(10 char|byte)

COL_ID CHAR(10) 

기본 형태이며 오라클 환경변수인 NLS_LENGTH_SEMANTICS의 값이 byte 또는 char에 따라 기본값이 달라진다.

COL_ID CHAR(10 byte)

컬럼_ID 컬럼이 10byte로 선언 되어 있다.

COL_ID CHAR(10 char)

컬럼_ID 컬럼이 10문자로 선언 되어 있다.

LONG 타입은 LOB 타입으로 대체해서 사용하라고 오라클에서 권고하고 있다.



2.숫자형 타입

종류는 BINARY_FLOAT, BINARY_DOUBLE, NUMBER


ex)number(전체자릿수, 소수점자리수)

COL_ID NUMBER(7) 

7자리의 정수를 표현한다.  ex)12345

COL_ID NUMBER(7, 2)

정수와 소수 포함하여 전체 7자리이며 소수점 2차리 까지 표현한다.      ex)12345.12

COL_ID NUMBER(7, -2)

전체 7자리의 수를 표현하며 소수점 좌측(정수) 2자리에서 반올림해서 표현한다. ex)1234600

COL_ID NUMBER(3, 5)

전체자리수 보다 소수점 자리수가 클때에는 소수점 자리수 - 전체자리수로 나온 숫자 만큼 소수점 이하 0으로 

먼저 채운뒤 나머지 남은 전체 자리수(5자리) 만큼 숫자로 표시한다.  ex)0.00123



3.날짜형 데이터

종류는 DATE, INTERVAL YEAR(n) TO MONTH, INTERVAL DAY(n) TO SECOND(n), 

TIMESTAMP(n), TIMESTAMP(n) WITH TIME ZONE, TIMESTAMP(n) WITH LOCAL TIME ZONE 중에서 DATE 타입형이 가장 많이 사용된다.


DATE 

크기는 7바이트이며, nls_date_format파라미터에 명시된 형식대로 표현한다.

INTERVAL YEAR(n) TO MONTH

크기는 5바이트이며,

연도와 월 형태로 표현하며 n은 자릿수를 나타낸다.(0-9 까지) 

month는 0-11로 표현된다.

ex)

생성 create table temp(a INTERVAL YEAR(2) TO MONTH)

입력 insert into temp values(INTERVAL '12-01' YEAR TO MONTH)

--------------------------------------------------------------------

결과 +12-01

INTERVAL DAY(n1) TO SECOND(n2)

크기는 11바이트이며,

요일, 시, 분, 초 형태로 기간을 표시한다.

ex) 

생성 create table temp(b INTERVAL DAY(2) TO SECOND(6));

입력 insert into temp values

    (INTERVAL '50 10:20:20.123' DAY(2) TO SECOND(3));

     날자는 2자리 이며 초는 6자리(.123000)로 표현한다.

--------------------------------------------------------------------

결과 +50 10:20:20.123000

TIMESTAMP(n)

밀리초까지 표현 가능한 날짜형 데이터 타입으로 디폴트는 6자리 이다.

ex)

select to_char(systimestamp, 'YYYY-MM-DD HH:MI:SS:FF') from dual;


여기서 FF는 밀리세컨드를 의미하며 

FF뒤에 숫자를 붙여서 추가할 밀리세컨드 자리수를 지정할 수 있다.


select to_char(systimestamp, 'YYYY-MM-DD HH:MI:SS:FF6') 

from dual;

insert into time_stamp values                  (to_timestamp('20021016124324345','yyyymmddhh24missff6'));


TIMESTAMP(n) WITH TIME ZONE

시간대와 더불어 날짜와 시간을 표현한다.

TIMESTAMP에 TIME ZONE REGION NAME이나 TIME ZONE OFFSET을 포함.

즉, TIMESTAMP + GMT 그리니치 표준시와의 차이를 함께 보여준다.


13byte로 디폴트값은 NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따른다.

ex)

insert into timestamp_tz values(to_timestamp('20200315121212111'))


TIMESTAMP(n) WITH LOCAL TIME ZONE

TIMESTAMP에 user's local session time zone을 포함

TIMESTAMP WITH TIME ZONE과 비슷하나 

저장시점에는 데이터베이스 시간대를 준수하나 조회시에는 클라이언트의 시간대로 

표현된다.

일반적으로 여러나라에 지사가 있을 경우 데이터를 공유하고자 할때 사용될 수 있다.


디폴트값은 NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따른다.



4.대용량 데이터 타입

오라클에서 새로 소개된 LOB(lARGE oBJECT) 타입은 대용량 데이터들을 저장하기 위한 타입이다. 


RAW, LONG RAW 

오라클 데이터베이스가 곧바로 해석하지 못하는 데이터 타입으로 용량이 큰 데이터들을 저장하기 위한 타입이다.

곧바로 해석하지 못한다는 의미는 

툴이나 Sql*plus를 사용하여 SELECT한 결과로 보이는 데이터가 실제 저장되어 있는 데이터의 실체를 나타내지 못함을 의미한다.

이 타입의 경우는 저장된 데이터를 다시 꺼내 보려면 추가적인 변환 작업이 

수행되어야 한다.


사진과 같은 그래픽 정보, 음악, 문서등 일반적인 텍스트 형식의 데이터가 아닌 

대용량 데이터가 이 종류에 속한다.

RAW나 LONG RAW 역시 LONG 타입과 마찬가지로 LOB 타입 등장한 이후로는 

오라클 사에서는 사용을 자제하도록 권고하고 있다.

ROWID

의사컬럼인 ROWID가 이 타입이며 실제로는 문자열로 구성된다.

오라클 7이전에 지원된 제한된 ROWID와 이후의 확장된 ROWID로 나뉜다. 

이 타입들 외에도 XML, URI, 사용자 정의 타입등이 존재한다.



5.ANSI 타입 vs ORACLE 타입

ANSI 타입 

ORACLE 변환 타입 

CHARACTER(n)

CHAR(n)

CHAR(n)

CHARACTER VARYING(n)

CHAR VARYING(n)

VARCHAR(n)

NATIONAL CHARACTER(n)

NATIONAL CHAR(n)

NCHAR(n)

NCHAR(n)

NATIONAL CHARACTER VARYING(n)

NATIONAL CHAR VARYING(n)

NCHAR VARYING(n)

NVARCHAR2(n)

NUMERIC(p, s)

DECIMAL(p, s) (a)

NUMBER(p, s)

INTEGER

INT

SMALLINT

NUMBER(38) 

FLOAT(b)

DOUBLE PRECISION(c)

REAL(d)

NUMBER 



'database > db' 카테고리의 다른 글

[oracle] 인덱스(INDEX)  (0) 2020.03.20
[oracle] 오라클 오브젝트 CRUD  (0) 2020.03.20
[oracle] 파라미터  (0) 2020.03.08
[oracle] 1.사용자 계정, 권한설정  (0) 2020.03.07
[oracle] 시스템 객체  (0) 2017.08.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함