Oracle DAY5 - 오라클 데이터 타입

어뮤즈온·2020년 12월 10일
0

Oracle

목록 보기
5/8

오라클 데이터 타입

오라클에서 제공하는 데이터 타입은 문자열, 숫자, 날짜, 2진 자료형이 있다.


문자열 자료형

  • ' '로 묶인 자료를 문자열 자료라 한다.
  • CHAR, VARCHAR, VARCHAR2, NVARCHAR, NCHAR, LONG, RAW, CLOB 등이 존재

1) CHAR

  • 고정길이 문자열을 취급
  • 최대 2000BYTE 저장 가능 (약 666글자)
  • 기억장소가 남으면 오른쪽에 공백이 삽입
  • 기억공간보다 큰 데이터는 저장 오류
  • 한글 한 글자는 3BYTE로 저장됨 (한글을 제외한 공백, 숫자는 1BYTE)
  • 기본키 등에 사용

(사용형식)
컬럼명 CHAR(크기[BYTE|CHAR])

  • 크기[BYTE|CHAR] : 기억공간의 크기(BYTE)나 글자수(CHAR) 정의 (2000BYTE 초과 불가)
CREATE TABLE TEMP01(
	COL1 CHAR(20),
    	COL2 CHAR(20 BYTE),
    	COL3 CHAR(20 CHAR)); --테이블 생성
    
INSERT INTO TEMP01(C0L1, COL2, COL3)
	VALUES('대한민국', 'IL POSTIONO', '대전광역시 중구 대흥동 500번지'); --데이터삽입

2) VARCHAR2

  • 가변길이 문자열 처리
  • 최대 4000BYTE 처리 가능
  • 정의된 기억공간에서 데이터의 길이 만큼 사용하고 남는 공간은 시스템에 반납
  • VARCHAR와 같은 기능(오라클은 VARCHAR2 사용 권고)

(사용형식)
컬럼명 VARCHAR2(크기[BYTE|CHAR])
-[BYTE|CHAR] : 생략되면 BYTE로 취급

CREATE TABLE TEMP02(
	COL1 VARCHAR2(20),
    	COL2 VARCHAR2(20 CHAR));
    
INSERT INTO TEMP02
	VALUES('대전시', '대한민국은');

3) LONG 데이터 타입

  • 가변길이 문자열을 저장
  • 최대 2GB까지 저장가능
  • LONG 타입은 하나의 테이블에서 1개만 사용 가능
  • CLOB로 대체(기능 업그레이드 중단)
  • SELECT문의 SELECT절, UPDATE문의 SET절, INSERT문의 VALUES절에서 사용 가능

(사용형식)
컬럼명 LONG

CREATE TABLE TEMP03(
	COL1 LONG,
    COL2 VARCHAR2(2000));

SELECT SUBSTR(COL2,2,5) FROM TEMP03;

4) CLOB(Character Large OBjects) 데이터 타입

  • 대용량 문자열 자료를 처리하기 위한 데이터 타입
  • 최대 4GB까지 처리 가능
  • 가변길이 문자 자료형
  • 한 테이블에서 사용될 수 있는 CLOB의 갯수에 제한이 없음
  • 일부 기능들은 DBMS_LOB API의 지원을 받아야 한다. -> LANGTHB의 경우 제한

(사용형식)
컬럼명 CLOB

CREATE TABLE TEMP04(
	COL1 CLOB,
    COL2 CLOB,
    COL3 CLOB);
    
SELLECT LENGTHB(COL2) FROM TEMP04; --제한

SELECT DBMS_LOB.SUBSTR(COL1,5,3),
       DBMS_LOB.GETLENGTH(COL2),
       LENGTH(COL3)
  FROM TEMP04;

5) NCLOB, NVARCHAR2

  • 다국어 지원 형태로 문자 자료 저장
  • UTF-8, UTF-16 형식의 ENCODDING
  • 나머지 기능은 CLOB, VARCHAR2와 동일

숫자 자료형

  • 정수와 실수 데이터 저장
  • NUMBER 타입 제공

(사용형식)
NUMBER[(정밀도|*[ , 스케일])]

  • 표현할 수 있는 값의 범위 : 1.0e-130 ~ 9.999..9e125
  • 정밀도 : 전체 자리수(1~38)
  • 스케일 : 소숫점이하의 자리수

ex)NUMBER(5,2) : 전체 5자리가 확보(정수 부분 3자리, 소숫점이하 3자리에서 반올림하여 2번째 자리까지 표현)

  • 정밀도 대신 '*'를 사용하여 38자리 이내에서 자동할당(정수부분)

ex)NUMBER(*,2) : 소숫점이하 3자리에서 반올림하여 2번째 자리까지 표현 단, 정수부분은 38자리 이내에서 크기 만큼 자동할당

  • 스케일이 생략되면 0으로 간주
  • 스케일이 음수이면 정수 부분에서 반올림


** 정밀도 < 스케일 인경우

  • 정밀도는 0이 아닌 유효숫자의 수
  • (스케일-정밀도) : 소숫점이하에 존재해야할 0의 갯수
  • 스케일 : 소숫점 이하의 데이터의 수


날짜 자료형

  • 날짜자료(년, 월, 시, 분, 초)를 저장하기 위한 데이터 타입
  • 기본형은 DATE, 시간대(TIMEZONE) 정보와 10억분의 1초단위의 시각정보를 제공하는 데이터 타입으로 TIMESTAMP가 제공

1) DATE 타입

  • 기본 날짜형
  • '+', '-' 연산의 대상
    ** SYSDATE : 시스템이 제공하는 날짜정보를 제공하는 함수

(사용형식)
컬럼명 DATE

INSERT INTO TEMP VALUES(SYSDATE, '20101029', SYSDATE+30);

2) TIMESTAMP 타입

  • 시간대 정보와 정교한 시각정보를 필요할 때 사용

(사용형식)
컬럼명 TIMESTAMP - 시간대 정보 없음
컬럼명 TIMESTAMP WITH TIME ZONE - 시간대정보(대륙명/도시명) 포함
컬럼명 TIMESTAMP WITH LOCAL TIME ZONE - 서버가 위치한 시간대정보, 보통 TIMESTAMP와 동일

CREATE TABLE TEMP(
	COL1 DATE,
    COL2 TIMESTAMP,
    COL3 TIMESTAMP WITH TIME ZONE,
    COL4 TIMESTAMP WITH LOCAL TIME ZONE);
    
INSERT INTO TEMP
	VALUES(SYSDATE,SYSDATE,SYSDATE,SYSDATE);

SELECT * FROM TEMP;


기타 자료형

  • 2진 자료를 저장하기 위한 자료 타입
  • BLOB, ROW, LONG ROW, BFILE 등이 제공

1) RAW

  • 상대적으로 작은 용량의 2진 자료를 저장
  • 인덱스 처리가 가능
  • ORACLE에서 해석이나 변환작업을 수행하지 않는다.
  • 최대 2000BYTE까지 처리 가능
  • 16진수와 2진수 저장

(사용형식)
컬럼명 RAW(크기)

2) BFILE

  • 2진자료 저장
  • 대상 2진자료를 데이터베이스 외부에 저장
  • 경로 정보(DIRECTORY 객체) 정보만 테이블에 저장
  • 4GB까지 저장 가능

(사용형식)
컬럼명 BFILE

  • 디렉토리 별칭(Alias) 설정(30BYTE)과 파일명(256BYTE)설정

그림파일 저장순서
1. 그림파일이 저장된 폴더 확인
2. 디렉토리 객체 생성 - 그림이 저장된 디렉토리의 절대 주소로 생성
CREATE DIRECTORY 디렉토리별칭 AS '절대주소'
3. 그림을 저장할 테이블 생성
CREATE TABLE TEMP(
COL1 BFILE);
4. 그림 삽입
INSERT INTO TEMP
VALUES(BFILENAME('디렉토리별칭','파일명.JPG'));

3) BLOB

  • 2진자료 저장
  • 대상 2진자료를 데이터베이스 내부에 저장
  • 4GB까지 저장 가능

(사용형식)
컬럼명 BLOB

그림파일 저장순서
1. 그림파일 준비
2. 디렉토리 객체 생성
3. 테이블 생성
4. 익명블록생성

profile
Hello, world!

0개의 댓글