티스토리 뷰
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 |