정보의 보물창고

[Oracle 오라클 Sql] 숫자형 데이터 타입 본문

개발 Memo/Oracle

[Oracle 오라클 Sql] 숫자형 데이터 타입

☆★※☆★※ 2021. 5. 25. 18:41
반응형

 

2. 숫자형

    - 정수 및 실수를 저장

    - NUMBER 타입 제공

    (사용형식)

    컬럼명 NUMBER [(정밀도] * [,스케일])];

        -저장 범위 : 10 * e-130 ~ 9.9999....99 * e125

        -'정밀도|*' : 정밀도를 시스템에 의존할 경우 '*' 사용

           --number (20,3) 3번째 자리에서 반올림

           --데이터 베이스에서는 사실 반올림을 잘 하지 않음. 가장 정확한 데이터를 저장

           --반올림이 필요한경우 자바 같은 응용프로그램에서 처리 해야함.

       

       

    1)정밀도 > 스케일

        - 정밀도 : 전체 자리수 (1~30)

        - 스케일이 양수 : 소숫점이라 자리수 (64~127)

        - 스케일이 음수 : 정수부분의 자리수 (20,3)

       

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

입력값                  선언                     기억값

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

1234.56789           NUMBER                     1234.56789          

1234.56789           NUMBER(7,3)                1234.56789               

1234.56789           NUMBER(*,3)                1234.56789       --10의 125승이상 이내라면 필요한 만큼 자리사용    

1234.56789           NUMBER(7)                  1235-- 스케일이 생략됨 , 스케일이 생략되면 0으로 간주함 (=NUMBER(7,0))  

1234.56789           NUMBER(5,3)                오류       -- 자리수가 부족해서 데이터가 저장되지 않고 오류가 발생함

1234.56789           NUMBER(7,-2)               1200

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

 

2) 정밀도 < 스케일

    -희귀한 경우

    -정밀도 : 0이 아닌 유효숫자의 갯수

    -스케일 - 정밀도 : 소숫점 다음에 존재해야하는 0의 갯수

   

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

입력값          선언                  기억값

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

0.2345       NUMBER(4,5)             오류

1.2345       NUMBER(3,5)             오류

0.0123       NUMBER(3,4)           0.0123               --소숫점이하의 자릿수, 4-3은 0의 갯수

0.0012345    NUMBER(3,5)           0.00124              -- 5-3= 2 는 0의 갯수

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

 

-- 1234.007 NUMBER(5,3)의 경우? 오류가 발생함. 정밀도 < 스케일과 정밀도> 스케일의 경우를 분리해서 생각할것.

 

3. 날짜형

    -,,,,,초를 저장하는 자료형이

    -DATE, TIMESTAMP이 제공

   

    1)DATE

     .표준 날짜형

     . '+''-'의 대상 : 연산 결과는 날짜형

     . 날짜형 - 날짜형 : 경과된 일수

    

    

    

    INSERT INTO TEMP05 VALUES(SYSDATE,SYSDATE-20,SYSDATE+30); --SYSDATE 현재 윈도우 시스템이 가지고 있는 날짜를 가져오는 함수

   

    SELECT * FROM   TEMP05; -- ,,초는 출력이 안됨 DATE에는 값이 저장되어있음

   

** 시각정보를 표현할때 : TO_CHAR 함수 사용

SELECT TO_CHAR(COL1,'YYYY-MM-DD PM HH24:MI:SS'), -- AM, PM은 오전 오후 형식을 지정하는 문자열이다. 둘다 같은 기능임

       TO_CHAR(COL2,'YYYY-MM-DD PM HH24:MI:SS'),

       TO_CHAR(COL3,'YYYY-MM-DD AM HH24:MI:SS')

    FROM TEMP05;

   

    SELECT TRUNC(SYSDATE) -TRUNC(COL2) FROM TEMP05 -- TRUNC 시간은 날리고 날짜만 남김

   

    SELECT MOD ((TRUNC(SYSDATE)-'00010101'))-1,7) FROM DUAL;

   

    2) TIMESTAMP

    - 시간대정보(TIMEZONE) 10억분의 1초 단위의 시각정보 제공

    - 응용프로그램(java jsp등에서 시간은 1/1000초 사용)

    (사용형식)

    컬럼명 TIMESTAMP;

    컬럼명 TIMESTAMP WITH TIME ZONE;

    컬럼명 TIMESTAMP WITH LOCAL TIME ZONE;

     -'TIMESTAMP': 시간대 정보 없음

     -'TIMESTAMP WITH TIME ZONE' : 시간대 정보 제공

     -'TIMESTAMP WITH LOCAL TIME ZONE' : 서버가 위치한 시간대 정보 = TIME ZONE

     과 동일

    사용예)
    CREATE TABLE TEMP06(
        COL1 TIMESTAMP,
        COL2 TIMESTAMP WITH TIME ZONE,
        COL3 TIMESTAMP WITH LOCAL TIME ZONE );
   
    INSERT INTO TEMP06 VALUES(SYSDATE,SYSDATE,SYSDATE);
   
    SELECT * FROM TEMP06

    

   

4.기타 자료형

 - 이전 자료를 처리하기 위한 자료형

 - BLOB, BFILE , RAW , LONG RAW

  1) RAW

   - 작은 크기의 이진자료 저장

   - 오라클에서 해석이나 변환작업을 수행하지 않음

   - 최대 2000BYTE 저장 가능

   - 주로 음성, 사진 등 저장

   - 16진수 및 2진수 저장 가능

   (사용형식)

   컬럼명 RAW(크기);

   (사용예)
   CREATE TABLE TEMP07(
    COL1 RAW(1000),
    COL2 RAW(1000));
   
    INSERT INTO TEMP07 VALUES(HEXTORAW('7DFF'),'11001001');
   
    SELECT *FROM TEMP07;

  

   

    2)BFILE

    - 이진 자료 저장

    - 원본자료를 테이블 외부에 저장하고 테이블에는 경로 정보만 저장

    - 4gb까지 저장 가능

   

(사용형식 )

컬럼명 BFFILE;

 

그림저장순서

(1) 원본 자료 저장된 디렉토리 객체 생성

    -디렉토리 별칭 (ALIAS) 30BYTE VKDLFAUD 256B 까지 사용가능

   

    CREATE DIRECTORY TEST_DIR AS 'D:\A_TeachingMaterial\2.Oracle\workspace';

    -디렉토리 별칭 : TEST_DIR

   

(2) 원본을 저장할 테이블 생성 = 칼럼 =>BFFAIL''

CREATE TABLE TEMP08(
COL1 BFILE);

INSERT INTO TEMP08 VALUES(BFILENAME('TEST_DIR','SAMPLE.jpg'));

SELECT * FROM TEMP08;

 

반응형