본문 바로가기
IT정보

ORACLE LOB 데이터 유형

by 디노프랭키 2023. 4. 19.
728x90

ORACLE의 LOB 데이터 유형에 대해 알아보겠습니다. LOB 데이터 유형에는 CLOB, NCLOB, BLOB이 있습니다.

오라클 LOB 데이터 유형

CLOB

CLOB (Character Large Object) 데이터 유형은 이름에서 알 수 있다시피 많은 문자 데이터를 저장하는 데이터 유형입니다. 앞서 문자 데이터 유형에서 설명한 VARCHAR2와 사용 용도가 비슷한 데이터 유형이지만 VARCAHR2는 4000Byte 길이 제한이 있습니다. 4000Byte 이상의 문자 데이터를 저장할 때 사용하는 데이터 유형이라 생각하시면 됩니다. CLOB은 로그, 텍스트, HTML, XML 등 많은 문자정보를 가지고 있는 데이터를 저장하는 데 사용되고 있습니다. 또한 이 데이터 유형은 DML(Data Manipulation Language) - SELECT, INSERT, UPDATE, DELETE가 가능합니다.

-- 테이블 생성시 CLOB데이터 유형을 사용하는 방법입니다.
CREATE TABLE TEST (
   VAR1 NUMBER(10),
   VAL2 CLOB
);

-- CLOB데이터 저장방법 입니다.
-- EMPTY_CLOB()은 CLOB 컬럼을 EMPTY로 만드는 함수로 LOB이 초기화가 되지만 데이터가 있지 않다는걸 의미합니다.
INSERT INTO TEST(VAL1, VAL2) VALUES (1, EMPTY_CLOB());
INSERT INTO TEST(VAL1, VAL2) VALUES (2, 'CLOB INSERT TEST');

-- CLOB데이터 조회하는 방법 입니다.
-- CLOB데이터 조회 시 꼭 조회 조건을 걸어줘야 합니다. 데이터 양이 많은 경우 BUFFER오류가 발생 할 수 있습니다.
SELECT VAL1	 -- 데이터가 많은경우 일부만 보여지게 됩니다.
     , DBMS_LOB.SUBSTR(VAL2, 1000, 1)   -- VAL2내용중 1~1000길이까지의 내용만 보여줍니다.
     , DBMS_LOB.SUBSTR(VAL2, DBMS_LOG.GETLENGTH(VAL2), 1) -- VAL2내용 전체를 보여줍니다.
  FROM TEST
 WHERE VAR1 = 2;

NCLOB

NCLOB(National Character Large Object) 데이터 유형은 CLOB데이터 유형과 비슷하지만 조금 더 큰 범위라고 볼 수 있습니다. NCLOB은 CLOB데이터 유형의 데이터는 물론이고 Unicode 문자열 데이터도 저장을 할 수 있습니다. NCLOB도 CLOB데이터와 마찬가지로 대용량 문자 데이터를 저장할 수 있으며 최대 4GB까지 저장이 가능하며 DML(Data Manipulation Language) - SELECT, INSERT, UPDATE, DELETE을 사용할 수 있습니다. 이 데이터 유형은 다국어 문서를 저장하거나 다국어 파일을 핸들링하는 등 다국어 언어지원 사용에 유용합니다.

-- 테이블 생성시 NCLOB데이터 유형을 사용하는 방법입니다.
CREATE TABLE TEST (
   VAR1 NUMBER(10),
   VAL2 NCLOB
);

-- NCLOB데이터 저장방법 입니다.
INSERT INTO TEST(VAL1, VAL2) VALUES (1, 'NCLOB INSERT TEST');

-- NCLOB데이터 조회하는 방법 입니다.
SELECT VAL1	 -- 데이터가 많은경우 일부만 보여지게 됩니다.
     , DBMS_LOB.SUBSTR(VAL2, 1000, 1)   -- VAL2내용중 1~1000길이까지의 내용만 보여줍니다.
     , DBMS_LOB.SUBSTR(VAL2, DBMS_LOG.GETLENGTH(VAL2), 1) -- VAL2내용 전체를 보여줍니다.
  FROM TEST
 WHERE VAR1 = 1;

BLOB

BLOB(Binary Large Object) 데이터 유형은 바이너리 대용량 데이터를 저장하는 데이터 유형입니다. CLOB, NCLOB과는 달리 이진 데이터로 구성이 되어있어 데이터의 구조와 크기가 일정하지 않을 수 있습니다. 이 데이터 유형도 DML(Data Manipulation Language) - SELECT, INSERT, UPDATE, DELETE을 사용할 수 있고 오디오, 이미지 비디오 등 이진 데이터로 저장하는데 유용합니다.

-- 테이블 생성시 BLOB데이터 유형을 사용하는 방법입니다.
CREATE TABLE TEST (
   VAR1 NUMBER(10),
   VAL2 BLOB
);

-- BLOB데이터 저장방법 입니다.
-- EMPTY_BLOB()은 LOB 컬럼을 EMPTY로 만드는 함수로 LOB이 초기화가 되지만 데이터가 있지 않다는걸 의미합니다.
INSERT INTO TEST(VAL1, VAL2) VALUES (1, EMPTY_BLOB());

-- PL/SQL로 BLOB 데이터를 추가하는 예제입니다.
-- WRITEAPPEND의 4는 추가할 데이터 길이이고 'abcd'는 추가할 데이터 입니다.
DECLARE
    my_blob BLOB;
BEGIN
    SELECT VAL2 INTO my_blob FROM TEST WHERE id = 1 FOR UPDATE;
    DBMS_LOB.WRITEAPPEND(VAL2, 4, 'abcd');
    COMMIT;
END;

-- PL/SQL로 BLOB 데이터를 수정하는 예제입니다.
-- WRITE의 4는 수정할 데이터의 길이이며, 1은 수정할 데이터의 시작 위치, 'efgh'는 수정할 데이터 입니다.
DECLARE
    my_blob BLOB;
BEGIN
    SELECT VAL2 INTO my_blob FROM TEST WHERE id = 1 FOR UPDATE;
    DBMS_LOB.WRITE(VAL2, 4, 1, 'efgh');
    COMMIT;
END;

오늘은 ORACLE LOB 데이터 유형에 대해 알아봤습니다. 많은 도움 되셨길 바랍니다.

728x90

'IT정보' 카테고리의 다른 글

ORACLE 테이블 생성/수정/삭제/복사  (0) 2023.04.22
SQL 기본 문법  (0) 2023.04.20
ORACLE 날짜 및 시간 데이터 유형  (0) 2023.04.18
ORACLE 숫자 데이터 유형  (0) 2023.04.17
ORACLE 문자 데이터 유형  (0) 2023.04.16

댓글